home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 1
/
Cream of the Crop 1.iso
/
PROGRAM
/
BIOS386.ARJ
/
BIOS.LST
< prev
next >
Wrap
File List
|
1992-04-07
|
814KB
|
19,198 lines
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 1
PAGE 59,132
;██████████████████████████████████████████████████████████████████████████
;██ ██
;██ BIOS ██
;██ ██
;██ Created: ██
;██ Version: ██
;██ Passes: 5 Analysis Options on: HQRS ██
;██ (C)1985-1990, American Megatrends Inc. All Rights ██
;██ ██
;██████████████████████████████████████████████████████████████████████████
.386p
.387
= 0065 data_3e equ 65h ; (0000:0065=0)
= 0068 data_4e equ 68h ; (0000:0068=0FE6Eh)
= 006A data_5e equ 6Ah ; (0000:006A=0F000h)
= 0070 data_6e equ 70h ; (0000:0070=3C0h)
= 0072 data_7e equ 72h ; (0000:0072=0D3D1h)
= 0074 video_hdw_off equ 74h ; (0000:0074=0F0A4h)
= 0078 disk_parm_off equ 78h ; (0000:0078=522h)
= 007C graph_tbl_off equ 7Ch ; (0000:007C=4CF0h)
= 007E graph_tbl_seg equ 7Eh ; (0000:007E=0C80Eh)
= 01FE data_8e equ 1FEh ; (0000:01FE=0)
= 0280 data_9e equ 280h ; (0000:0280=0)
= 0282 data_10e equ 282h ; (0000:0282=0)
= 0284 data_11e equ 284h ; (0000:0284=0)
= 0286 data_12e equ 286h ; (0000:0286=0)
= 0288 data_13e equ 288h ; (0000:0288=0)
= 028A data_14e equ 28Ah ; (0000:028A=0)
= 028C data_15e equ 28Ch ; (0000:028C=0)
= 028E data_16e equ 28Eh ; (0000:028E=0)
= 0818 data_18e equ 818h ; (0000:0818=4EF0h)
= 081A data_19e equ 81Ah ; (0000:081A=7003h)
= 0820 data_20e equ 820h ; (0000:0820=3)
= 0822 data_21e equ 822h ; (0000:0822=1)
= 082C data_22e equ 82Ch ; (0000:082C=2212h)
= 0472 data_24e equ 472h ; (0040:0472=80h)
= 20FE data_25e equ 20FEh ; (0040:20FE=16h)
= 2032 data_26e equ 2032h ; (02F8:2032=26C1h)
= 3434 data_27e equ 3434h ; (02F8:3434=1703h)
= 2000 data_28e equ 2000h ; (B800:2000=720h)
= 0000 rom_chk_word equ 0 ; (C000:0000=0AA55h)
= 0002 rom_chk_size equ 2 ; (C000:0002=40h)
= 0010 data_29e equ 10h ; (C000:0010=20h)
= 0011 data_30e equ 11h ; (C000:0011=52h)
= 0012 data_31e equ 12h ; (C000:0012=45h)
= 0013 data_32e equ 13h ; (C000:0013=4553h)
= 0017 data_33e equ 17h ; (C000:0017=45h)
= 003E data_34e equ 3Eh ; (C000:003E=39h)
= 003F data_35e equ 3Fh ; (C000:003F=30h)
= 0040 data_36e equ 40h ; (C000:0040=0)
= 0041 data_37e equ 41h ; (C000:0041=0)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 2
= 0042 data_38e equ 42h ; (C000:0042=20h)
= 0043 data_39e equ 43h ; (C000:0043=43h)
= 0063 data_40e equ 63h ; (C000:0063=2030h)
= 0065 data_41e equ 65h ; (C000:0065=54h)
= 0067 data_42e equ 67h ; (C000:0067=4449h)
= 0069 data_43e equ 69h ; (C000:0069=4E45h)
= 006C data_44e equ 6Ch ; (C000:006C=4D20h)
= 006E data_45e equ 6Eh ; (C000:006E=4349h)
= 0070 data_46e equ 70h ; (C000:0070=52h)
= 0072 data_47e equ 72h ; (C000:0072=5953h)
= 0075 data_48e equ 75h ; (C000:0075=54h)
= 0078 data_49e equ 78h ; (C000:0078=2053h)
= 007A data_50e equ 7Ah ; (C000:007A=4E49h)
= 007C data_51e equ 7Ch ; (C000:007C=2E43h)
= 007E data_52e equ 7Eh ; (C000:007E=0A0Dh)
= 008B data_53e equ 8Bh ; (C000:008B=74h)
= 008F data_54e equ 8Fh ; (C000:008F=38h)
= 0090 data_55e equ 90h ; (C000:0090=2D37h)
= 0092 data_57e equ 92h ; (C000:0092=3931h)
= 0094 data_58e equ 94h ; (C000:0094=3039h)
= 0096 data_59e equ 96h ; (C000:0096=20h)
= 0097 data_60e equ 97h ; (C000:0097=51h)
= 0098 data_61e equ 98h ; (C000:0098=75h)
= 00A0 data_62e equ 0A0h ; (C000:00A0=6Fh)
;-------------------------------------------------------------- seg_a ----
seg_a segment at 0
0000:0000 B4AC vector_0h_off dw 0B4ACh ; Divide error
0000:0002 11FD vector_0h_seg dw 11FDh
0000:0004 06F4 vector_1h_off dw 6F4h ; Single Step
0000:0006 0070 vector_1h_seg dw 70h
0000:0008 0016 vector_2h_off dw 16h ; NMI
0000:000A 1033 vector_2h_seg dw 1033h
0000:000C 06F4 vector_3h_off dw 6F4h ; Debug
0000:000E 0070 vector_3h_seg dw 70h
0000:0010 06F4 vector_4h_off dw 6F4h ; Overflow
0000:0012 0070 vector_4h_seg dw 70h
0000:0014 FF54 vector_5h_off dw 0FF54h ; Print Screen
0000:0016 F000 vector_5h_seg dw 0F000h
0000:0018 EB29 vector_6h_off dw 0EB29h
0000:001A F000 vector_6h_seg dw 0F000h
0000:001C EA7D vector_7h_off dw 0EA7Dh
0000:001E F000 vector_7h_seg dw 0F000h
0000:0020 003C vector_8h_off dw 3Ch ; Timer Ticks
0000:0022 1033 vector_8h_seg dw 1033h
0000:0024 0452 vector_9h_off dw 452h ; Keyboard
; xref F000:E929
0000:0026 D3D1 vector_9h_seg dw 0D3D1h ; xref F000:E92F
0000:0028 0057 vector_Ah_off dw 57h
0000:002A 1033 vector_Ah_seg dw 1033h
0000:002C 006F vector_Bh_off dw 6Fh ; Serial
0000:002E 1033 vector_Bh_seg dw 1033h
0000:0030 1EC3 vector_Ch_off dw 1EC3h ; Serial
0000:0032 D00F vector_Ch_seg dw 0D00Fh
0000:0034 CAB5 vector_Dh_off dw 0CAB5h ; Disk
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 3
0000:0036 11FD vector_Dh_seg dw 11FDh
0000:0038 00B7 vector_Eh_off dw 0B7h ; Diskette
0000:003A 1033 vector_Eh_seg dw 1033h
0000:003C 06F4 vector_Fh_off dw 6F4h ; Bad Interrupt
0000:003E 0070 vector_Fh_seg dw 70h
0000:0040 02E7 vectr_10h_off dw 2E7h ; Video
; xref F000:D1AB, F000:D1FD
0000:0042 D3D1 vectr_10h_seg dw 0D3D1h ; Data table (indexed access)
; xref F000:BF3A, F000:D1B4
; F000:D203
0000:0044 F84D vectr_11h_off dw 0F84Dh ; Equipment
0000:0046 F000 vectr_11h_seg dw 0F000h
0000:0048 F841 vectr_12h_off dw 0F841h ; Memory Size
0000:004A F000 vectr_12h_seg dw 0F000h
0000:004C 0774 vectr_13h_off dw 774h ; Disk Services
0000:004E 0070 vectr_13h_seg dw 70h
org 400h
0000:0400 F8 03 F8 02 E8 02 db 0F8h, 3, 0F8h, 2, 0E8h, 2
0000:0406 00 00 78 03 00 00 db 0, 0, 78h, 3, 0, 0
0000:040C 00 00 00 00 61 46 db 0, 0, 0, 0, 61h, 46h
0000:0412 BF db 0BFh
0000:0413 0280 main_ram_size_ dw 280h
0000:0415 00 00 80 00 00 24 db 0, 0, 80h, 0, 0, 24h
0000:041B 00 24 00 0D 1C 79 db 0, 24h, 0, 0Dh, 1Ch, 79h
0000:0421 15 67 22 08 0E 08 db 15h, 67h, 22h, 8, 0Eh, 8
0000:0427 0E 08 0E 08 0E 08 db 0Eh, 8, 0Eh, 8, 0Eh, 8
0000:042D 0E 08 0E 75 16 6E db 0Eh, 8, 0Eh, 75h, 16h, 6Eh
0000:0433 31 62 30 69 17 6F db 31h, 62h, 30h, 69h, 17h, 6Fh
0000:0439 18 73 1F 70 19 00 db 18h, 73h, 1Fh, 70h, 19h, 0
0000:043F 00 27 00 C0 00 00 db 0, 27h, 0, 0C0h, 0, 0
0000:0445 00 00 00 00 03 50 db 0, 0, 0, 0, 3, 50h
0000:044B 00 A0 10 00 00 4F db 0, 0A0h, 10h, 0, 0, 4Fh
0000:0451 18 00 00 00 00 00 db 18h, 0, 0, 0, 0, 0
0000:0457 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
0000:045D 00 00 00 00 20 00 db 0, 0, 0, 0, 20h, 0
0000:0463 D4 03 db 0D4h, 3
0000:0465 29 30 db 29h, 30h
0000:0467 0522 @gen_io_ptr_ dw 522h
0000:0469 87 90 FF db 87h, 90h, 0FFh
0000:046C BE78 timer_low_ dw 0BE78h
0000:046E 0F 00 00 00 db 0Fh, 0, 0, 0
0000:0472 1200 warm_boot_flag_ dw 1200h ; Data table (indexed access)
0000:0474 00 01 00 00 14 14 db 0, 1, 0, 0, 14h, 14h
0000:047A 14 34 01 01 01 01 db 14h, 34h, 1, 1, 1, 1
0000:0480 1E 00 3E 00 18 10 db 1Eh, 0, 3Eh, 0, 18h, 10h
0000:0486 00 60 09 11 0B 81 db 0, 60h, 9, 11h, 0Bh, 81h
0000:048C 50 00 00 db 50h, 0, 0
0000:048F 33 db 33h
0000:0490 02 hdsk0_media_st_ db 2
0000:0491 07 00 00 00 00 10 db 7, 0, 0, 0, 0, 10h
0000:0497 10 00 00 00 00 00 db 10h, 0, 0, 0, 0, 0
0000:049D 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
0000:04A3 00 00 00 00 00 B8 db 0, 0, 0, 0, 0, 0B8h
0000:04A9 3C 0E C8 00 00 00 db 3Ch, 0Eh, 0C8h, 0, 0, 0
0000:04AF 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 4
0000:04B5 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
0000:04BB 00 db 0
0000:04BC 0014[00] db 20 dup (0)
seg_a ends
;-------------------------------------------------------------- seg_b ----
seg_b segment at 40h
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ PRIMARY BIOS DATA AREA █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
0040:0000 03F8 @rs232_port_1 dw 3F8h ; RS-232 port addresses
; xref F000:AA6E, F000:AA75
; F000:AA89, F000:C5AF
0040:0002 02F8 @rs232_port_2 dw 2F8h
0040:0004 02E8 @rs232_port_3 dw 2E8h
0040:0006 0000 @rs232_port_4 dw 0
0040:0008 0378 @prn_port_1 dw 378h ; Printer port addresses
0040:000A 0000 @prn_port_2 dw 0
0040:000C 0000 @prn_port_3 dw 0
0040:000E 0000 BIOS_data_seg dw 0 ; Extended BIOS data (PS/2)or printer
; Printer 4 (PC,XT,AT & compatibles)
0040:0010 4661 equip_bits dw 4661h ; Equipment installed info bits
; 15 14 13 12 11 10 9 8
; \ / game \ /
; # of print port # of RS-232
; ports 0-3 used ports 0-4
; 7 6 5 4 3 2 1 0
; \ / \ / \ / Math |
; # of video mode RAM uP no
; disk- at boot up 00=16K dsk
; ettes 00=EGA 01=32K driv
; 1-4 01=CGA-40 10=48K if 0
; if bit 10=CGA-80 11=64K
; 0 = 1 11=MDA-80 (old PCs)
; Note: bit 13=modem on PC lap-tops
; bit 2=mouse on PS/2
;
; xref F000:8567, F000:9168
; F000:9176, F000:B1BB
; F000:F854
0040:0012 BF init_test_flag db 0BFh ; Initialization test
; xref F000:914A, F000:945A
; F000:ABA8, F000:ACEF
0040:0013 0280 main_ram_size dw 280h ; Base memory size 0-1Meg, 1K steps
; xref F000:AC5A, F000:ACD1
; F000:BD82, F000:E9A3
; F000:F846
0040:0015 0000 chan_io_size dw 0 ; Channel i/o size
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 5
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ KEYBOARD DATA █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
0040:0017 80 keybd_flags_1 db 80h ; Keyboard flag bits
; 7 6 5 4 3 2 1 0
; ins- cap num scrl alt ctl lef rig
; sert --toggles--- --shifts down--
; xref F000:9B70, F000:9BDF
; F000:9C0A, F000:9C4E
; F000:9C96, F000:9CAC
; F000:9D24, F000:9DE2
; F000:9E01, F000:9E25
; F000:9E3F, F000:9E9B
; F000:9ED3, F000:9F58
; F000:9F5F, F000:9FAC
; F000:A10E
0040:0018 00 keybd_flags_2 db 0 ; Keyboard flag bits
; 7 6 5 4
; insert caps num scroll
; ------now depressed------
; 3 2 1 0
; pause sys left right
; lock request -alt-down-
;
; xref F000:9BC3, F000:9BCD
; F000:9BFA, F000:9BFE
; F000:9C35, F000:9C67
; F000:9C79, F000:9C80
; F000:9CA2, F000:9D41
; F000:9D5D, F000:9E91
; F000:9E97, F000:9EA5
; F000:9EB0, F000:9EC7
; F000:9ECE, F000:A0FA
0040:0019 00 keybd_alt_num db 0 ; Alt & digit pad number buffr area
; xref F000:9C16, F000:9CD6
; F000:9CF7, F000:9D04
; F000:9D0A
0040:001A 0024 keybd_q_head dw 24h ; Head ptr of circular key queue
; empty if head ptr = tail ptr
; xref F000:941C, F000:9D79
; F000:9F84, F000:A05F
; F000:A0B7, F000:A144
; F000:A15C
0040:001C 0024 keybd_q_tail dw 24h ; Tail ptr of circular key queue
; empty if head ptr = tail ptr
; xref F000:941F, F000:9D7C
; F000:9F7C, F000:9F91
; F000:A063, F000:A0AF
; F000:A0BF, F000:A148
0040:001E 1C0D 1579 2267 keybd_queue dw 1C0Dh, 1579h, 2267h ; 15 key queue for keyboard
0040:0024 0E08 0E08 0E08 dw 0E08h, 0E08h, 0E08h
0040:002A 0E08 0E08 0E08 dw 0E08h, 0E08h, 0E08h
0040:0030 1675 316E 3062 dw 1675h, 316Eh, 3062h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 6
0040:0036 1769 186F 1F73 dw 1769h, 186Fh, 1F73h
0040:003C 1970 dw 1970h
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ DISK DATA █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
0040:003E 00 dsk_recal_stat db 0 ; Recalibrate floppy drive bits
; 3 2 1 0
; drive-3 drive-2 drive-1 drive-0
; bit 7 = interrupt flag
;
; xref F000:AECC, F000:B773
; F000:E837
0040:003F 00 dsk_motor_stat db 0 ; Motor running status & disk write
; bit 7=1 disk write in progress
; bits 6&5 = drive selected 0 to 3
; 3 2 1 0
; drive-3 drive-2 drive-1 drive-0
; --------- 1=motor on-----------
; xref F000:B950, F000:B95A
; F000:B960, F000:B970
; F000:B975, F000:B988
; F000:B9BA, F000:ED20
0040:0040 1D dsk_motor_tmr db 1Dh ; Motor timer, at 0, turn off motor
; xref F000:AEC2, F000:AFEF
; F000:B94B, F000:ED15
0040:0041 00 dsk_ret_code db 0 ; Controller return code
; 00h = ok
; 01h = bad command or parameter
; 02h = can't find address mark
; 03h = can't write, protected dsk
; 04h = sector not found
; 08h = DMA overrun
; 09h = DMA attempt over 64K bound
; 10h = bad CRC on disk read
; 20h = controller failure
; 40h = seek failure
; 80h = timeout, no response
; xref F000:AEA3, F000:AEAD
; F000:AEDE, F000:AEF1
; F000:AF23, F000:AF34
; F000:AF51, F000:AFDB
; F000:AFFE, F000:B0F5
; F000:B1AD, F000:B7C7
0040:0042 C0 dsk_status_1 db 0C0h ; Status bytes-disk controller chip
; Note: 7 info bytes returned from
; controller are saved here. Refer
; to the NEC uPD 765 chip manual
; for the specific info, depending
; on the previous command issued.
0040:0043 00 dsk_status_2 db 0
0040:0044 00 dsk_status_3 db 0
0040:0045 00 dsk_status_4 db 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 7
0040:0046 00 dsk_status_5 db 0
0040:0047 00 dsk_status_6 db 0
0040:0048 00 dsk_status_7 db 0
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ VIDEO DATA █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
0040:0049 03 video_mode db 3 ; Present display mode(see int 10h)
; xref F000:85A7, F000:8720
; F000:872E, F000:874E
; F000:87C9, F000:8807
; F000:8919, F000:894A
; F000:8951, F000:899A
; F000:8A03, F000:8A36
; F000:8A3D, F000:8A79
; F000:8AAA, F000:8AB1
; F000:8B0D, F000:8C36
; F000:8CBD, F000:8CC4
; F000:8CFC, F000:9D4D
0040:004A 0050 video_columns dw 50h ; Number of columns
; xref F000:85D5, F000:869B
; F000:873B, F000:87F7
; F000:881D, F000:8833
; F000:8933, F000:898D
; F000:8A20, F000:8A94
; F000:8AFD, F000:8C39
; F000:8CAC, F000:8CD5
0040:004C 10A0 video_buf_siz dw 10A0h ; Video buffer size in bytes
; Note: size may be rounded up to
; the nearest 2K boundary. For
; example, 80x25 mode=4000 bytes,
; but value may be 4096.
; xref F000:85F0, F000:8797
; F000:8940, F000:8A2D
; F000:8AA1
0040:004E 0000 video_segment dw 0 ; Segment of active video memory
; MDA=0B000h, CGA=0B800h, etc.
; xref F000:85F5, F000:86A3
; F000:8719, F000:879B
; F000:8827
0040:0050 184F vid_curs_pos0 dw 184Fh ; Cursor position page 0
; bits 15-8=row, bits 7-0=column
; xref F000:8987, F000:8AF7
0040:0052 0000 vid_curs_pos1 dw 0 ; Cursor position page 1
; bits 15-8=row, bits 7-0=column
0040:0054 0000 vid_curs_pos2 dw 0 ; Cursor position page 2
; bits 15-8=row, bits 7-0=column
0040:0056 0000 vid_curs_pos3 dw 0 ; Cursor position page 3
; bits 15-8=row, bits 7-0=column
0040:0058 0000 vid_curs_pos4 dw 0 ; Cursor position page 4
; bits 15-8=row, bits 7-0=column
0040:005A 0000 vid_curs_pos5 dw 0 ; Cursor position page 5
; bits 15-8=row, bits 7-0=column
0040:005C 0000 vid_curs_pos6 dw 0 ; Cursor position page 6
; bits 15-8=row, bits 7-0=column
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 8
0040:005E 0000 vid_curs_pos7 dw 0 ; Cursor position page 7
; bits 15-8=row, bits 7-0=column
0040:0060 2000 vid_curs_mode dw 2000h ; Active cursor, start & end lines
; bits 12 to 8 for starting line
; bits 4 to 0 for ending line
; xref F000:863B, F000:866B
; F000:86D8
0040:0062 00 video_page db 0 ; Present page
; xref F000:85F8, F000:868A
; F000:8791, F000:8BFA
; F000:8C42
0040:0063 03D4 @video_port dw 3D4h ; Video controller base I/O address
; xref F000:85A3, F000:86AD
; F000:86E1, F000:8958
; F000:8A52, F000:8AC4
; F000:8BBC
0040:0065 29 video_mode_reg db 29h ; Hardware mode register bits
; xref F000:85BD, F000:865C
; F000:9D54
0040:0066 30 video_color db 30h ; Color set in CGA modes
; xref F000:85B2, F000:8665
; F000:8BA0, F000:8BB9
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ GENERAL DATA █
; █ Note: next 5 bytes also used █
; █ for cassette interface in █
; █ older PCs. █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
0040:0067 0522 @gen_io_ptr dw 522h ; ROM initialization pointer
; xref F000:8FA3, F000:AB6A
; F000:AD07, F000:BD7F
; F000:BE54, F000:CACC
; F000:CB9B
0040:0069 9087 @gen_io_seg dw 9087h ; ROM i/o segment
; xref F000:AD45, F000:CAD2
; F000:CB96
0040:006B FF gen_int_occured db 0FFh ; Unused interrupt occurred
; xref F000:EAAC
0040:006C BE8B timer_low dw 0BE8Bh ; Timer, low word, cnts every 55 ms
; xref F000:D1E1, F000:ED49
; F000:ED56
0040:006E 000F timer_hi dw 0Fh ; Timer, high word
; xref F000:ED4D, F000:ED5A
0040:0070 00 timer_rolled db 0 ; Timer overflowed, non-zero when
; more than 24 hours have elapsed
; xref F000:ED45, F000:ED53
0040:0071 00 keybd_break db 0 ; Bit 7 set if break key depressed
; xref F000:9D7F
0040:0072 1200 warm_boot_flag dw 1200h ; Boot (reset) type
; 1234h=warm boot, no memory test
; 4321h=boot & save memory
; (PS/2 with MCA only)
; xref F000:9192, F000:9CB7
; F000:C082
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 9
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ HARD DISK DATA █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
0040:0074 00 hdsk_status_1 db 0 ; Hard disk status
; 00h = ok
; 01h = bad command or parameter
; 02h = can't find address mark
; 03h = can't write, protected dsk
; 04h = sector not found
; 05h = reset failure
; 07h = activity failure
; 08h = DMA overrun
; 09h = DMA attempt over 64K bound
; 0Ah = bad sector flag
; 0Bh = removed bad track
; 0Dh = wrong # of sectors, format
; 0Eh = removed control data addr
; mark
; 0Fh = out of limit DMA
; arbitration level
; 10h = bad CRC or ECC, disk read
; 11h = bad ECC corrected data
; 20h = controller failure
; 40h = seek failure
; 80h = timeout, no response
; AAh = not ready
; BBh = error occurred, undefined
; CCh = write error, selected dsk
; E0h = error register = 0
; FFh = disk sense failure
;
; xref F000:A1F5, F000:A238
; F000:A2AE, F000:A2B3
; F000:A2B8, F000:A3CB
; F000:A458, F000:A48C
; F000:A554, F000:A55E
; F000:A58C, F000:A5DD
; F000:A612, F000:A640
; F000:A6AB, F000:A6DB
; F000:A714, F000:A73F
; F000:A762, F000:A7C0
; F000:A823
0040:0075 01 hdsk_count db 1 ; Number of hard disk drives
; xref F000:A28C, F000:A2A0
; F000:A3C5, F000:A65B
0040:0076 00 hdsk_head_ctrl db 0 ; Head control (XT only)
; xref F000:A43A, F000:A4AA
; F000:A83B, F000:A842
0040:0077 00 hdsk_ctrl_port db 0 ; Hard disk control port (XT only)
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ I/O PORT TIMER, KEYBOARD DATA █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
0040:0078 14 prn_timeout_1 db 14h ; Countdown timer waits for printer
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 10
; to respond (printer 1)
; xref F000:F88B
0040:0079 14 prn_timeout_2 db 14h ; Countdown timer waits for printer
; to respond
0040:007A 14 prn_timeout_3 db 14h
0040:007B 34 prn_timeout_4 db 34h
0040:007C 01 rs232_timeout_1 db 1 ; Countdown timer waits for RS-232
; port to respond (port 1)
; xref F000:F8EA
0040:007D 01 rs232_timeout_2 db 1 ; Countdown timer waits for RS-232
; port to respond
0040:007E 01 rs232_timeout_3 db 1
0040:007F 01 rs232_timeout_4 db 1
0040:0080 001E @keybd_begin dw 1Eh ; Ptr to beginning of keybd queue
; xref F000:9422, F000:9D76
; F000:A03F
0040:0082 003E @keybd_end dw 3Eh ; Ptr to end of keyboard queue
; xref F000:9428, F000:A039
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ ADVANCED VIDEO DATA, EGA/VGA █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
0040:0084 18 video_rows db 18h ; Rows of characters on display - 1
; xref F000:858F, F000:9163
; F000:ECB4
0040:0085 0010 video_pixels dw 10h ; Number of pixels per charactr * 8
0040:0087 60 video_options db 60h ; Display adapter options
; bit 7 = clear RAM
; bits 6,5 = memory on adapter
; 00 - 64K
; 01 - 128K
; 10 - 192K
; 11 - 256K
; bit 4 = unused
; bit 3 = 0 if EGA/VGA active
; bit 2 = wait for display enable
; bit 1 = 1 - mono monitor
; = 0 - color monoitor
; bit 0 = 0 - handle cursor, CGA
0040:0088 09 video_switches db 9 ; Switch setting bits from adapter
; bits 7-4 = feature connector
; bits 3-0 = option switches
0040:0089 11 video_1_reservd db 11h ; Video reserved 1, EGA/VGA control
; bit 7 = 200 line mode
; bits 6,5 = unused
; bit 4 = 400 line mode
; bit 3 = no palette load
; bit 2 = mono monitor
; bit 1 = gray scale
; bit 0 = unused
0040:008A 0B video_2_reservd db 0Bh ; Video reserved 2
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ OTHER FLOPPY & HARD DISK DATA █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 11
0040:008B 81 dsk_data_rate db 81h ; Last data rate for diskette
; bits 7 & 6 = 00 for 500K bit/sec
; = 01 for 300K bit/sec
; = 10 for 250K bit/sec
; bits 5 & 4 = step rate
0040:008C 50 hdsk_status_2 db 50h ; Hard disk status
; xref F000:A4FC, F000:A580
; F000:A6D5, F000:A711
; F000:A75C, F000:A772
0040:008D 00 hdsk_error db 0 ; Hard disk error
; xref F000:A277, F000:A5D1
; F000:A797
0040:008E 00 hdsk_int_flags db 0 ; Set for hard disk interrupt flag
; xref F000:A25A, F000:A745
; F000:A7D3, F000:E84B
0040:008F 33 hdsk_options db 33h ; Bit 0 = 1 when using 1 controller
; card for both hard disk & floppy
; xref F000:AE7D
0040:0090 02 hdsk0_media_st db 2 ; Media state for drive 0
; xref F000:BEAB
0040:0091 07 hdsk1_media_st db 7 ; Media state for drive 1
; 7 6 5 4
; data xfer rate two media
; 00=500K bit/s step known
; 01=300K bit/s
; 10=250K bit/s
; 3 2 1 0
; unused -----state of drive-----
; bits floppy drive state
; 000= 360K in 360K, ?
; 001= 360K in 1.2M, ?
; 010= 1.2M in 1.2M, ?
; 011= 360K in 360K, ok
; 100= 360K in 1.2M, ok
; 101= 1.2M in 1.2M, ok
; 111= state not defined
0040:0092 00 hdsk0_start_st db 0 ; Start state for drive 0
0040:0093 00 hdsk1_start_st db 0 ; Start state for drive 1
0040:0094 00 hdsk0_cylinder db 0 ; Track number for drive 0
0040:0095 00 hdsk1_cylinder db 0 ; Track number for drive 1
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ ADVANCED KEYBOARD DATA █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
0040:0096 10 keybd_flags_3 db 10h ; Special keyboard type and mode
; bit 7 Reading ID of keyboard
; 6 last char is 1st ID char
; 5 force num lock
; 4 101/102 key keyboard
; 3 right alt key down
; 2 right ctrl key down
; 1 E0h hidden code last
; 0 E1h hidden code last
;
; xref F000:9B43, F000:9B4C
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 12
; F000:9B55, F000:9B5C
; F000:9B69, F000:9B78
; F000:9B84, F000:9B8F
; F000:9BF1, F000:9C04
; F000:9C5E, F000:9DF4
; F000:9E79, F000:9FA4
; F000:A06A, F000:A070
; F000:A076, F000:A107
0040:0097 10 keybd_flags_4 db 10h ; Keyboard Flags (advanced keybd)
; 7 6 5 4 3 2 1 0
; xmit char Resend Ack \ /
; error was ID Rec'd Rec'd LEDs
; xref F000:9B18, F000:9B23
; F000:9FB6, F000:9FBF
; F000:9FC6, F000:9FDC
; F000:9FE1, F000:9FE5
; F000:9FEF, F000:9FFB
; F000:A045, F000:A04C
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ REAL-TIME CLOCK & LAN DATA █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
0040:0098 0000 @timer_wait_off dw 0 ; Ptr offset to wait done flag
; xref F000:CBFF
0040:009A 0000 @timer_wait_seg dw 0 ; Ptr segment to wait done flag
; xref F000:CC03
0040:009C 0000 timer_clk_low dw 0 ; Timer low word, 1 microsecond clk
; xref F000:CC07, F000:EA41
0040:009E 0000 timer_clk_hi dw 0 ; Timer high word
; xref F000:CC0B, F000:EA47
0040:00A0 00 timer_clk_flag db 0 ; Timer flag 00h = post acknowledgd
; 01h = busy
; 80h = posted
; xref F000:CBEF, F000:CBFA
0040:00A1 00 lan_1 db 0 ; Local area network bytes (7)
0040:00A2 00 lan_2 db 0
0040:00A3 00 lan_3 db 0
0040:00A4 00 lan_4 db 0
0040:00A5 00 lan_5 db 0
0040:00A6 00 lan_6 db 0
0040:00A7 00 lan_7 db 0
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ MORE ADVANCED VIDEO DATA █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
0040:00A8 C80E3CB8 @video_sav_tbls dd 0C80E3CB8h ; Pointer to a save table of more
; pointers for the video system
; SAVE TABLE
; offset type pointer to
; ────── ──── ────────────────────
; 0 dd Video parameters
; 4 dd Parms save area
; 8 dd Alpha char set
; 0Ch dd Graphics char set
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 13
; 10h dd 2nd save ptr table
; 14h dd reserved (0:0)
; 18h dd reserved (0:0)
;
; 2ND SAVE TABLE (from ptr above)
; offset type functions & pointers
; ────── ──── ────────────────────
; 0 dw Bytes in this table
; 2 dd Combination code tbl
; 6 dd 2nd alpha char set
; 0Ah dd user palette tbl
; 0Eh dd reserved (0:0)
; 12h dd reserved (0:0)
; 16h dd reserved (0:0)
0040:00AC 0054[00] db 84 dup (0)
0040:0100 00 prn_scrn_stat_b db 0
seg_b ends
;-------------------------------------------------------------- seg_c ----
seg_c segment at 50h
0050:0000 00 prn_scrn_stat db 0 ; Print screen status
; 00h = Print screen ready
; 01h = Print screen in progress
; FFh = Error occurred
; xref F000:EC63, F000:ECCC
0050:0001 00 db 0
seg_c ends
;-------------------------------------------------------------- seg_d ----
seg_d segment para public use16
assume cs:seg_d , ds:seg_b
org 8000h
F000:8000 58 58 58 58 38 38 begin_text db 'XXXX88886666----0123AAAAMMMMIIII'
F000:8006 38 38 36 36 36 36
F000:800C 2D 2D 2D 2D 30 31
F000:8012 32 33 41 41 41 41
F000:8018 4D 4D 4D 4D 49 49
F000:801E 49 49
F000:8020 20 44 61 74 65 3A db ' Date:-06/13/90 '
F000:8026 2D 30 36 2F 31 33
F000:802C 2F 39 30 20
F000:8030 28 43 29 31 39 38 copyright db '(C)1985-1990, American Megatrend'
F000:8036 35 2D 31 39 39 30
F000:803C 2C 20 41 6D 65 72
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 14
F000:8042 69 63 61 6E 20 4D
F000:8048 65 67 61 74 72 65
F000:804E 6E 64
F000:8050 73 20 49 6E 63 2E db 's Inc. All Rights '
F000:8056 20 41 6C 6C 20 52
F000:805C 69 67 68 74 73 20
F000:8062 52 65 73 65 72 76 db 'Reserved. '
F000:8068 65 64 2E 20
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ System Reset ▒▒▒▒▒
;
; SYSTEM RESET
;
; Reset the computer system. General operation includes a test of
; of the CPU, ROM checksum, and initialization of hardware including:
;
; Memory system
; Timer/Counter (which is also used for RAM refresh)
; Interrupt Controller(s)
; DMA Controller(s)
; Keyboard Controller
; Video Controller & Video RAM
; Floppy Controller
; Hard Disk Controller (if present)
;
; Portions of the hardware may also have specific tests made to
; insure reliable operation. Test failures may display error code
; on the screen if the video subsystem is operational, or generate
; beeps or LED blinks to signify the error.
;
; Note: A soft reset uses the warm_boot_flag to skip the memory
; tests. (i.e. from pressing Ctrl-Alt-Del).
;
; The system checks for installed ROMs by searching memory from
; C000h to the beginning of the BIOS, in 2K chunks. ROM memory is
; identified if it starts with the word AA55h. It is followed a one
; byte field length of the ROM (divided by 512). If ROM is found,
; the BIOS will call the ROM at an offset of 3 from the beginning.
; This feature was not supported in the earliest PC machines.
;
; The last task turns control over to the bootstrap loader (assuming
; the floppy controller is operational)
F000:806C system_reset proc near ; xref F000:E05B
F000:806C CC int 3 ; Debug breakpoint
F000:806D FC cld ; Clear direction
F000:806E E4 64 in al,64h ; port 64h, keyboard status
F000:8070 A8 04 test al,4
F000:8072 75 07 jnz short loc_2 ; Jump if not zero
F000:8074 B0 8D mov al,8Dh
F000:8076 E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
F000:8078 E9 00BB jmp loc_15 ; (8136)
F000:807B loc_2: ; xref F000:8072
F000:807B B0 8F mov al,8Fh
F000:807D E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 8Fh, NMI off/pwr status
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 15
F000:807F EB 00 jmp short loc_3 ; (8081)
F000:8081 loc_3: ; xref F000:807F
F000:8081 EB 00 jmp short loc_4 ; (8083)
F000:8083 loc_4: ; xref F000:8081
F000:8083 E4 71 in al,71h ; port 71h, RTC clock/RAM data
F000:8085 B4 00 mov ah,0
F000:8087 8B F0 mov si,ax
F000:8089 B0 8F mov al,8Fh
F000:808B EB 00 jmp short loc_5 ; (808D)
F000:808D loc_5: ; xref F000:808B
F000:808D EB 00 jmp short loc_6 ; (808F)
F000:808F loc_6: ; xref F000:808D
F000:808F E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 8Fh, NMI off/pwr status
F000:8091 B0 00 mov al,0
F000:8093 EB 00 jmp short loc_7 ; (8095)
F000:8095 loc_7: ; xref F000:8093
F000:8095 EB 00 jmp short loc_8 ; (8097)
F000:8097 loc_8: ; xref F000:8095
F000:8097 E6 71 out 71h,al ; port 71h, RTC clock/RAM data
F000:8099 8C C8 mov ax,cs
F000:809B 8E D0 mov ss,ax
F000:809D 8B C6 mov ax,si
F000:809F 3C 04 cmp al,4
F000:80A1 74 0B je short loc_9 ; Jump if equal
F000:80A3 3C 05 cmp al,5
F000:80A5 74 07 je short loc_9 ; Jump if equal
F000:80A7 3C 0A cmp al,0Ah
F000:80A9 76 0F jbe short loc_10 ; Jump if below or =
F000:80AB E9 00DB jmp loc_18 ; (8189)
F000:80AE loc_9: ; xref F000:80A1, 80A5
F000:80AE BB 0870 mov bx,870h
F000:80B1 90 nop ;
F000:80B2 BC 80B8 mov sp,80B8h
F000:80B5 E9 6E24 jmp loc_1331 ; (EEDC)
F000:80B8 BA 80 db 0BAh, 80h
F000:80BA loc_10: ; xref F000:80A9
F000:80BA 8B C6 mov ax,si
F000:80BC 3C 05 cmp al,5
F000:80BE 74 08 je short loc_11 ; Jump if equal
F000:80C0 3C 09 cmp al,9
F000:80C2 74 04 je short loc_11 ; Jump if equal
F000:80C4 3C 0A cmp al,0Ah
F000:80C6 75 20 jne short loc_12 ; Jump if not equal
F000:80C8 loc_11: ; xref F000:80BE, 80C2
F000:80C8 0F 01 E0 smsw ax ; Store machine stat
F000:80CB F6 C4 FF test ah,0FFh
F000:80CE 75 18 jnz short loc_12 ; Jump if not zero
F000:80D0 66| C1 C8 10 ror eax,10h ; Rotate
F000:80D4 8B C8 mov cx,ax
F000:80D6 0F 20 C0 mov eax,cr0 ; Mov reg-control reg
F000:80D9 66| 25 9FFFFFFF and eax,9FFFFFFFh
F000:80DF 0F 22 C0 mov cr0,eax ; Mov reg-control reg
F000:80E2 8B C1 mov ax,cx
F000:80E4 66| C1 C8 10 ror eax,10h ; Rotate
F000:80E8 loc_12: ; xref F000:80C6, 80CE
F000:80E8 B8 0040 mov ax,seg_b
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 16
F000:80EB 8E D8 mov ds,ax
F000:80ED B0 00 mov al,0
F000:80EF 8E C0 mov es,ax
F000:80F1 B0 30 mov al,30h ; '0'
F000:80F3 8E D0 mov ss,ax
F000:80F5 BC 0100 mov sp,100h
F000:80F8 D1 E6 shl si,1 ; Shift w/zeros fill
F000:80FA 2E: FF A4 8100 jmp word ptr cs:data_63[si] ;*(F000:8100=8189h) 9 entries
F000:80FF 90 db 90h
F000:8100 8189 data_63 dw offset loc_18 ; Data table (indexed access)
; xref F000:80FB
F000:8102 AA50 data_64 dw offset loc_646 ; xref F000:80FB
F000:8104 8F86 data_65 dw offset loc_283 ; xref F000:80FB
F000:8106 AB66 data_66 dw offset loc_653 ; xref F000:80FB
F000:8108 8F8C data_67 dw offset loc_284 ; xref F000:80FB
F000:810A 8F9D data_68 dw offset loc_287 ; xref F000:80FB
F000:810C AD07 data_69 dw offset loc_683 ; xref F000:80FB
F000:810E 8189 data_70 dw offset loc_18 ; xref F000:80FB
F000:8110 8189 data_71 dw offset loc_18 ; xref F000:80FB
F000:8112 96 CB A3 8F db 96h, 0CBh, 0A3h, 8Fh
F000:8116 loc_13: ; xref F000:8141, 814A
F000:8116 BD 0005 mov bp,5
F000:8119 E9 0C3C jmp loc_218 ; (8D58)
F000:811C loc_14: ; xref F000:8152
F000:811C 8B D8 mov bx,ax
F000:811E 8B CB mov cx,bx
F000:8120 8B D1 mov dx,cx
F000:8122 8B F2 mov si,dx
F000:8124 8B FE mov di,si
F000:8126 8B EF mov bp,di
F000:8128 8E C5 mov es,bp
F000:812A 8C C0 mov ax,es
F000:812C 8E D8 mov ds,ax
F000:812E 8C D8 mov ax,ds
F000:8130 8E D0 mov ss,ax
F000:8132 8C D0 mov ax,ss
F000:8134 FF E4 jmp sp ;*Register jump
F000:8136 loc_15: ; xref F000:8078
F000:8136 B0 01 mov al,1
F000:8138 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:813A BC 5555 mov sp,5555h
F000:813D 81 FC 5555 cmp sp,5555h
F000:8141 75 D3 jne loc_13 ; Jump if not equal
F000:8143 BC AAAA mov sp,0AAAAh
F000:8146 81 FC AAAA cmp sp,0AAAAh
F000:814A 75 CA jne loc_13 ; Jump if not equal
F000:814C B8 5555 mov ax,5555h
F000:814F BC 8154 mov sp,8154h
F000:8152 EB C8 jmp short loc_14 ; (811C)
F000:8154 35 55 55 75 BD B8 db 35h, 55h, 55h, 75h, 0BDh, 0B8h
F000:815A AA AA BC 61 81 EB db 0AAh, 0AAh, 0BCh, 61h, 81h, 0EBh
F000:8160 BB 35 AA AA 75 B0 db 0BBh, 35h, 0AAh, 0AAh, 75h, 0B0h
F000:8166 B4 08 db 0B4h, 8
F000:8168 loc_16: ; xref F000:8169, 816D
F000:8168 49 dec cx
F000:8169 75 FD jnz loc_16 ; Jump if not zero
F000:816B FE CC dec ah
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 17
F000:816D 75 F9 jnz loc_16 ; Jump if not zero
F000:816F B0 02 mov al,2
F000:8171 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:8173 33 DB xor bx,bx ; Zero register
F000:8175 B9 4000 mov cx,4000h
F000:8178 BE 8000 mov si,8000h
F000:817B locloop_17: ; xref F000:817F
F000:817B 2E: AD lods word ptr cs:[si] ; String [si] to ax
F000:817D 03 D8 add bx,ax
F000:817F E2 FA loop locloop_17 ; Loop if cx > 0
F000:8181 74 06 jz short loc_18 ; Jump if zero
F000:8183 BD 0009 mov bp,9
F000:8186 E9 0BCF jmp loc_218 ; (8D58)
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:8189 loc_18: ; xref F000:80AB, 80FB, 8100, 810E
; 8110, 8181
F000:8189 B0 03 mov al,3
F000:818B E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:818D 33 ED xor bp,bp ; Zero register
F000:818F 8E DD mov ds,bp
F000:8191 8E C5 mov es,bp
F000:8193 8C C8 mov ax,cs
F000:8195 8E D0 mov ss,ax
F000:8197 E4 64 in al,64h ; port 64h, keyboard status
F000:8199 A8 04 test al,4
F000:819B 74 02 jz short loc_19 ; Jump if zero
F000:819D EB 17 jmp short loc_23 ; (81B6)
F000:819F loc_19: ; xref F000:819B
F000:819F EB 20 jmp short loc_24 ; (81C1)
F000:81A1 B4 06 33 C9 db 0B4h, 6, 33h, 0C9h
F000:81A5 locloop_20: ; xref F000:81AB, 81B1
F000:81A5 EB 00 jmp short loc_21 ; (81A7)
F000:81A7 loc_21: ; xref F000:81A5
F000:81A7 E4 64 in al,64h ; port 64h, keyboard status
F000:81A9 A8 01 test al,1
F000:81AB E1 F8 loopz locloop_20 ; Loop if zf=1, cx>0
F000:81AD 75 04 jnz short loc_22 ; Jump if not zero
F000:81AF FE CC dec ah
F000:81B1 75 F2 jnz locloop_20 ; Jump if not zero
F000:81B3 loc_22: ; xref F000:81AD
F000:81B3 E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:81B5 C3 retn
system_reset endp
F000:81B6 loc_23: ; xref F000:819D
assume ds:seg_a
F000:81B6 81 3E 0472 1234 cmp warm_boot_flag_,1234h ; (0000:0472=1200h)
F000:81BC 75 03 jne short loc_24 ; Jump if not equal
F000:81BE BD 8000 mov bp,8000h
F000:81C1 loc_24: ; xref F000:819F, 81BC
F000:81C1 B7 02 mov bh,2
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 18
F000:81C3 33 C9 xor cx,cx ; Zero register
F000:81C5 locloop_25: ; xref F000:81D6
F000:81C5 EB 00 jmp short loc_26 ; (81C7)
F000:81C7 loc_26: ; xref F000:81C5
F000:81C7 E4 64 in al,64h ; port 64h, keyboard status
F000:81C9 8A E0 mov ah,al
F000:81CB A8 01 test al,1
F000:81CD 74 04 jz short loc_28 ; Jump if zero
F000:81CF EB 00 jmp short loc_27 ; (81D1)
F000:81D1 loc_27: ; xref F000:81CF
F000:81D1 E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:81D3 loc_28: ; xref F000:81CD
F000:81D3 F6 C4 02 test ah,2
F000:81D6 E0 ED loopnz locloop_25 ; Loop if zf=0, cx>0
F000:81D8 B0 AA mov al,0AAh
F000:81DA E6 64 out 64h,al ; port 64h, kybd cntrlr functn
; al = 0AAh, self test
F000:81DC BC 81E2 mov sp,81E2h
F000:81DF E9 0D00 jmp loc_271 ; (8EE2)
F000:81E2 E4 81 BC E9 81 EB db 0E4h, 81h, 0BCh, 0E9h, 81h, 0EBh
F000:81E8 B8 EB 81 B0 60 E6 db 0B8h, 0EBh, 81h, 0B0h, 60h, 0E6h
F000:81EE 64 90 BC F6 81 E9 db 64h, 90h, 0BCh, 0F6h, 81h, 0E9h
F000:81F4 EC 0C F8 81 2E F6 db 0ECh, 0Ch, 0F8h, 81h, 2Eh, 0F6h
F000:81FA 06 C0 E2 40 B0 55 db 6, 0C0h, 0E2h, 40h, 0B0h, 55h
F000:8200 74 02 B0 db 74h, 2, 0B0h
F000:8203 74 db 74h
F000:8204 loc_29:
F000:8204 E6 60 out 60h,al ; port 60h, keybd data write
F000:8206 BC 820C mov sp,820Ch
F000:8209 E9 0CD6 jmp loc_271 ; (8EE2)
F000:820C 0E 82 B0 AE E6 64 db 0Eh, 82h, 0B0h, 0AEh, 0E6h, 64h
F000:8212 BC 18 82 E9 CA 0C db 0BCh, 18h, 82h, 0E9h, 0CAh, 0Ch
F000:8218 1A 82 B7 00 B9 00 db 1Ah, 82h, 0B7h, 0, 0B9h, 0
F000:821E 40 db 40h
F000:821F locloop_30: ; xref F000:822D
F000:821F EB 00 jmp short loc_31 ; (8221)
F000:8221 loc_31: ; xref F000:821F
F000:8221 E4 64 in al,64h ; port 64h, keyboard status
F000:8223 24 01 and al,1
F000:8225 74 04 jz short loc_33 ; Jump if zero
F000:8227 EB 00 jmp short loc_32 ; (8229)
F000:8229 loc_32: ; xref F000:8227
F000:8229 E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:822B loc_33: ; xref F000:8225
F000:822B 3C 52 cmp al,52h ; 'R'
F000:822D E0 F0 loopnz locloop_30 ; Loop if zf=0, cx>0
F000:822F 75 09 jnz short loc_34 ; Jump if not zero
F000:8231 0B ED or bp,bp ; Zero ?
F000:8233 78 05 js short loc_34 ; Jump if sign=1
F000:8235 B7 08 mov bh,8
F000:8237 83 CD 02 or bp,2
F000:823A loc_34: ; xref F000:822F, 8233
F000:823A B0 AD mov al,0ADh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 19
F000:823C E6 64 out 64h,al ; port 64h, kybd cntrlr functn
; al = 0ADh, disable keyboard
F000:823E BC 8244 mov sp,8244h
F000:8241 E9 0C9E jmp loc_271 ; (8EE2)
F000:8244 46 82 B8 B8 B8 90 db 46h, 82h, 0B8h, 0B8h, 0B8h, 90h
F000:824A BC 50 82 E9 39 6C db 0BCh, 50h, 82h, 0E9h, 39h, 6Ch
F000:8250 52 82 24 F7 0A C7 db 52h, 82h, 24h, 0F7h, 0Ah, 0C7h
F000:8256 86 C4 BC 5E 82 E9 db 86h, 0C4h, 0BCh, 5Eh, 82h, 0E9h
F000:825C 34 6C 60 82 0B ED db 34h, 6Ch, 60h, 82h, 0Bh, 0EDh
F000:8262 78 18 B8 B7 B7 90 db 78h, 18h, 0B8h, 0B7h, 0B7h, 90h
F000:8268 BC 6E 82 E9 1B 6C db 0BCh, 6Eh, 82h, 0E9h, 1Bh, 6Ch
F000:826E 70 82 0C 0C 86 C4 db 70h, 82h, 0Ch, 0Ch, 86h, 0C4h
F000:8274 BC 7A 82 E9 18 6C db 0BCh, 7Ah, 82h, 0E9h, 18h, 6Ch
F000:827A 7C 82 B0 04 E6 80 db 7Ch, 82h, 0B0h, 4, 0E6h, 80h
F000:8280 B8 8F 55 90 BC 8A db 0B8h, 8Fh, 55h, 90h, 0BCh, 8Ah
F000:8286 82 E9 08 6C 8C 82 db 82h, 0E9h, 8, 6Ch, 8Ch, 82h
F000:828C BC 92 82 E9 F7 6B db 0BCh, 92h, 82h, 0E9h, 0F7h, 6Bh
F000:8292 94 82 32 C4 75 18 db 94h, 82h, 32h, 0C4h, 75h, 18h
F000:8298 B8 8F AA 90 BC A2 db 0B8h, 8Fh, 0AAh, 90h, 0BCh, 0A2h
F000:829E 82 E9 F0 6B A4 82 db 82h, 0E9h, 0F0h, 6Bh, 0A4h, 82h
F000:82A4 BC AA 82 E9 DF 6B db 0BCh, 0AAh, 82h, 0E9h, 0DFh, 6Bh
F000:82AA AC 82 32 C4 74 04 db 0ACh, 82h, 32h, 0C4h, 74h, 4
F000:82B0 81 CD 00 40 B0 8D db 81h, 0CDh, 0, 40h, 0B0h, 8Dh
F000:82B6 BC BC 82 E9 CD 6B db 0BCh, 0BCh, 82h, 0E9h, 0CDh, 6Bh
F000:82BC BE 82 0A C0 B8 8E db 0BEh, 82h, 0Ah, 0C0h, 0B8h, 8Eh
F000:82C2 8E 90 BC CA 82 E9 db 8Eh, 90h, 0BCh, 0CAh, 82h, 0E9h
F000:82C8 BF 6B CC 82 78 08 db 0BFh, 6Bh, 0CCh, 82h, 78h, 8
F000:82CE 83 CD 20 0C DC EB db 83h, 0CDh, 20h, 0Ch, 0DCh, 0EBh
F000:82D4 50 90 0A C0 78 44 db 50h, 90h, 0Ah, 0C0h, 78h, 44h
F000:82DA 8B D8 33 C9 33 D2 db 8Bh, 0D8h, 33h, 0C9h, 33h, 0D2h
F000:82E0 B8 90 90 90 BC EA db 0B8h, 90h, 90h, 90h, 0BCh, 0EAh
F000:82E6 82 E9 9F 6B EC 82 db 82h, 0E9h, 9Fh, 6Bh, 0ECh, 82h
F000:82EC 8A C8 03 D1 FE C4 db 8Ah, 0C8h, 3, 0D1h, 0FEh, 0C4h
F000:82F2 8A C4 3C AE 75 EB db 8Ah, 0C4h, 3Ch, 0AEh, 75h, 0EBh
F000:82F8 FE C4 BC 00 83 E9 db 0FEh, 0C4h, 0BCh, 0, 83h, 0E9h
F000:82FE 89 6B 02 83 86 C4 db 89h, 6Bh, 2, 83h, 86h, 0C4h
F000:8304 BC 0A 83 E9 7F 6B db 0BCh, 0Ah, 83h, 0E9h, 7Fh, 6Bh
F000:830A 0C 83 3B C2 8B C3 db 0Ch, 83h, 3Bh, 0C2h, 8Bh, 0C3h
F000:8310 75 04 0B D2 75 0D db 75h, 4, 0Bh, 0D2h, 75h, 0Dh
F000:8316 0C 5C 81 CD 80 00 db 0Ch, 5Ch, 81h, 0CDh, 80h, 0
F000:831C EB 07 83 CD 40 EB db 0EBh, 7, 83h, 0CDh, 40h, 0EBh
F000:8322 02 24 8B db 2, 24h, 8Bh
F000:8325 loc_35:
F000:8325 8B D8 mov bx,ax
F000:8327 B8 8B8B mov ax,8B8Bh
F000:832A BC 8330 mov sp,8330h
F000:832D E9 6B59 jmp loc_1321 ; (EE89)
F000:8330 32 83 24 07 86 C4 db 32h, 83h, 24h, 7, 86h, 0C4h
F000:8336 BC 3C 83 E9 56 6B db 0BCh, 3Ch, 83h, 0E9h, 56h, 6Bh
F000:833C 3E 83 B0 8C BC 46 db 3Eh, 83h, 0B0h, 8Ch, 0BCh, 46h
F000:8342 83 E9 43 6B 48 83 db 83h, 0E9h, 43h, 6Bh, 48h, 83h
F000:8348 B8 8A 8A 90 BC 52 db 0B8h, 8Ah, 8Ah, 90h, 0BCh, 52h
F000:834E 83 E9 37 6B 54 83 db 83h, 0E9h, 37h, 6Bh, 54h, 83h
F000:8354 24 0F 75 0C B0 26 db 24h, 0Fh, 75h, 0Ch, 0B0h, 26h
F000:835A 86 C4 BC 62 83 E9 db 86h, 0C4h, 0BCh, 62h, 83h, 0E9h
F000:8360 30 6B 64 83 B0 94 db 30h, 6Bh, 64h, 83h, 0B0h, 94h
F000:8366 BC 6C 83 E9 1D 6B db 0BCh, 6Ch, 83h, 0E9h, 1Dh, 6Bh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 20
F000:836C 6E 83 D0 E8 8B C3 db 6Eh, 83h, 0D0h, 0E8h, 8Bh, 0C3h
F000:8372 72 05 83 CD 40 0C db 72h, 5, 83h, 0CDh, 40h, 0Ch
F000:8378 20 86 C4 90 BC 82 db 20h, 86h, 0C4h, 90h, 0BCh, 82h
F000:837E 83 E9 10 6B 84 83 db 83h, 0E9h, 10h, 6Bh, 84h, 83h
F000:8384 0F 01 E0 F6 C4 FF db 0Fh, 1, 0E0h, 0F6h, 0C4h, 0FFh
F000:838A 75 0E 0F 20 C0 66 db 75h, 0Eh, 0Fh, 20h, 0C0h, 66h
F000:8390 0D 00 00 00 60 0F db 0Dh, 0, 0, 0, 60h, 0Fh
F000:8396 22 C0 0F 08 33 C0 db 22h, 0C0h, 0Fh, 8, 33h, 0C0h
F000:839C 8E C0 8E D8 E9 db 8Eh, 0C0h, 8Eh, 0D8h, 0E9h
F000:83A1 26 70 db 26h, 70h
F000:83A3 loc_36:
F000:83A3 B0 04 mov al,4
F000:83A5 E6 08 out 8,al ; port 8, DMA-1 command reg
F000:83A7 EB 00 jmp short loc_37 ; (83A9)
F000:83A9 loc_37: ; xref F000:83A7
F000:83A9 EB 00 jmp short loc_38 ; (83AB)
F000:83AB loc_38: ; xref F000:83A9
F000:83AB E6 D0 out 0D0h,al ; port 0D0h, DMA-2 command reg
F000:83AD B0 00 mov al,0
F000:83AF EB 00 jmp short loc_39 ; (83B1)
F000:83B1 loc_39: ; xref F000:83AF
F000:83B1 EB 00 jmp short loc_40 ; (83B3)
F000:83B3 loc_40: ; xref F000:83B1
F000:83B3 E6 8F out 8Fh,al ; port 8Fh, DMA page reg ch 4
F000:83B5 BB 0870 mov bx,870h
F000:83B8 BC 83BE mov sp,83BEh
F000:83BB E9 6B22 jmp loc_1332 ; (EEE0)
F000:83BE C0 83 B0 05 E6 80 db 0C0h, 83h, 0B0h, 5, 0E6h, 80h
F000:83C4 33 C0 BA D8 03 EE db 33h, 0C0h, 0BAh, 0D8h, 3, 0EEh
F000:83CA EB 00 EB 00 db 0EBh, 0, 0EBh, 0
F000:83CE loc_41:
F000:83CE 40 inc ax
F000:83CF B2 B8 mov dl,0B8h
F000:83D1 EE out dx,al ; port 0B8h
F000:83D2 EB 00 jmp short loc_42 ; (83D4)
F000:83D4 loc_42: ; xref F000:83D2
F000:83D4 EB 00 jmp short loc_43 ; (83D6)
F000:83D6 loc_43: ; xref F000:83D4
F000:83D6 B2 BA mov dl,0BAh
F000:83D8 EC in al,dx ; port 0BAh
F000:83D9 EB 00 jmp short loc_44 ; (83DB)
F000:83DB loc_44: ; xref F000:83D9
F000:83DB EB 00 jmp short loc_45 ; (83DD)
F000:83DD loc_45: ; xref F000:83DB
F000:83DD B2 DA mov dl,0DAh
F000:83DF EC in al,dx ; port 0DAh, DMA-2 temp reg
F000:83E0 EB 00 jmp short loc_46 ; (83E2)
F000:83E2 loc_46: ; xref F000:83E0
F000:83E2 EB 00 jmp short loc_47 ; (83E4)
F000:83E4 loc_47: ; xref F000:83E2
F000:83E4 B2 C0 mov dl,0C0h
F000:83E6 B0 00 mov al,0
F000:83E8 EE out dx,al ; port 0C0h, DMA-2 bas&add ch 0
F000:83E9 B0 06 mov al,6
F000:83EB E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:83ED B0 FC mov al,0FCh
F000:83EF E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 21
F000:83F1 EB 00 jmp short loc_48 ; (83F3)
F000:83F3 loc_48: ; xref F000:83F1
F000:83F3 EB 00 jmp short loc_49 ; (83F5)
F000:83F5 loc_49: ; xref F000:83F3
F000:83F5 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:83F7 A8 01 test al,1
F000:83F9 EB 03 jmp short loc_50 ; (83FE)
F000:83FB 83 CD 01 db 83h, 0CDh, 1
F000:83FE loc_50: ; xref F000:83F9
F000:83FE B0 B4 mov al,0B4h
F000:8400 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:8402 B0 55 mov al,55h ; 'U'
F000:8404 EB 00 jmp short loc_51 ; (8406)
F000:8406 loc_51: ; xref F000:8404
F000:8406 EB 00 jmp short loc_52 ; (8408)
F000:8408 loc_52: ; xref F000:8406
F000:8408 E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:840A B0 AA mov al,0AAh
F000:840C EB 00 jmp short loc_53 ; (840E)
F000:840E loc_53: ; xref F000:840C
F000:840E EB 00 jmp short loc_54 ; (8410)
F000:8410 loc_54: ; xref F000:840E
F000:8410 E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:8412 B0 80 mov al,80h
F000:8414 EB 00 jmp short loc_55 ; (8416)
F000:8416 loc_55: ; xref F000:8414
F000:8416 EB 00 jmp short loc_56 ; (8418)
F000:8418 loc_56: ; xref F000:8416
F000:8418 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
; al = 80h, timer 3 count mode
F000:841A EB 00 jmp short loc_57 ; (841C)
F000:841C loc_57: ; xref F000:841A
F000:841C EB 00 jmp short loc_58 ; (841E)
F000:841E loc_58: ; xref F000:841C
F000:841E E4 42 in al,42h ; port 42h, 8253 timer 2 spkr
F000:8420 8A E0 mov ah,al
F000:8422 EB 00 jmp short loc_59 ; (8424)
F000:8424 loc_59: ; xref F000:8422
F000:8424 EB 00 jmp short loc_60 ; (8426)
F000:8426 loc_60: ; xref F000:8424
F000:8426 E4 42 in al,42h ; port 42h, 8253 timer 2 spkr
F000:8428 3D 55AA cmp ax,55AAh
F000:842B EB 03 jmp short loc_61 ; (8430)
F000:842D 83 CD 01 db 83h, 0CDh, 1
F000:8430 loc_61: ; xref F000:842B
F000:8430 B0 07 mov al,7
F000:8432 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:8434 B0 FD mov al,0FDh
F000:8436 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8438 BA 0042 mov dx,42h
F000:843B BC 8440 mov sp,8440h
F000:843E EB 25 jmp short loc_64 ; (8465)
F000:8440 EB 03 jmp short loc_62 ; (8445)
F000:8442 83 CD 01 db 83h, 0CDh, 1
F000:8445 loc_62: ; xref F000:8440
F000:8445 B0 08 mov al,8
F000:8447 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 22
F000:8449 B2 41 mov dl,41h ; 'A'
F000:844B BC 8450 mov sp,8450h
F000:844E EB 15 jmp short loc_64 ; (8465)
F000:8450 EB 00 jmp short loc_63 ; (8452)
F000:8452 loc_63: ; xref F000:8450
F000:8452 B0 09 mov al,9
F000:8454 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:8456 B2 40 mov dl,40h ; '@'
F000:8458 BC 845D mov sp,845Dh
F000:845B EB 08 jmp short loc_64 ; (8465)
F000:845D EB 5F jmp short loc_78 ; (84BE)
F000:845F BD 04 00 E9 F3 08 db 0BDh, 4, 0, 0E9h, 0F3h, 8
F000:8465 loc_64: ; xref F000:843E, 844E, 845B
F000:8465 8A C2 mov al,dl
F000:8467 24 03 and al,3
F000:8469 C0 C8 02 ror al,2 ; Rotate
F000:846C 8A D8 mov bl,al
F000:846E 0C 14 or al,14h
F000:8470 8A F8 mov bh,al
F000:8472 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:8474 B0 FF mov al,0FFh
F000:8476 8A E0 mov ah,al
F000:8478 B9 0020 mov cx,20h
F000:847B EB 00 jmp short loc_65 ; (847D)
F000:847D loc_65: ; xref F000:847B
F000:847D EB 00 jmp short loc_66 ; (847F)
F000:847F loc_66: ; xref F000:847D
F000:847F EE out dx,al ; port 40h, 8253 timer 0 clock
F000:8480 locloop_67: ; xref F000:8480
F000:8480 E2 FE loop locloop_67 ; Loop if cx > 0
F000:8482 8A C3 mov al,bl
F000:8484 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
; al = 0, timer 0 count mode
F000:8486 EB 00 jmp short loc_68 ; (8488)
F000:8488 loc_68: ; xref F000:8486
F000:8488 EB 00 jmp short loc_69 ; (848A)
F000:848A loc_69: ; xref F000:8488
F000:848A EC in al,dx ; port 40h, 8253 timer 0 clock
F000:848B 2A E0 sub ah,al
F000:848D 74 2D jz short loc_77 ; Jump if zero
F000:848F 8A C7 mov al,bh
F000:8491 EB 00 jmp short loc_70 ; (8493)
F000:8493 loc_70: ; xref F000:8491
F000:8493 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:8495 B0 CC mov al,0CCh
F000:8497 8A F8 mov bh,al
F000:8499 B1 20 mov cl,20h ; ' '
F000:849B EB 00 jmp short loc_71 ; (849D)
F000:849D loc_71: ; xref F000:849B
F000:849D EB 00 jmp short loc_72 ; (849F)
F000:849F loc_72: ; xref F000:849D
F000:849F EE out dx,al ; port 40h, 8253 timer 0 clock
F000:84A0 locloop_73: ; xref F000:84A0
F000:84A0 E2 FE loop locloop_73 ; Loop if cx > 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 23
F000:84A2 8A C3 mov al,bl
F000:84A4 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
; al = 0, timer 0 count mode
F000:84A6 EB 00 jmp short loc_74 ; (84A8)
F000:84A8 loc_74: ; xref F000:84A6
F000:84A8 EB 00 jmp short loc_75 ; (84AA)
F000:84AA loc_75: ; xref F000:84A8
F000:84AA EC in al,dx ; port 40h, 8253 timer 0 clock
F000:84AB 2A F8 sub bh,al
F000:84AD 74 0D jz short loc_77 ; Jump if zero
F000:84AF 2A E7 sub ah,bh
F000:84B1 73 02 jnc short loc_76 ; Jump if carry=0
F000:84B3 F6 DC neg ah
F000:84B5 loc_76: ; xref F000:84B1
F000:84B5 80 FC 06 cmp ah,6
F000:84B8 72 02 jb short loc_77 ; Jump if below
F000:84BA 32 C0 xor al,al ; Zero register
F000:84BC loc_77: ; xref F000:848D, 84AD, 84B8
F000:84BC FF E4 jmp sp ;*Register jump
F000:84BE loc_78: ; xref F000:845D
F000:84BE B0 0A mov al,0Ah
F000:84C0 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:84C2 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:84C4 24 FC and al,0FCh
F000:84C6 EB 00 jmp short loc_79 ; (84C8)
F000:84C8 loc_79: ; xref F000:84C6
F000:84C8 EB 00 jmp short loc_80 ; (84CA)
F000:84CA loc_80: ; xref F000:84C8
F000:84CA E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:84CC B0 54 mov al,54h ; 'T'
F000:84CE E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:84D0 33 FF xor di,di ; Zero register
F000:84D2 B9 8000 mov cx,8000h
F000:84D5 F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:84D7 B0 12 mov al,12h
F000:84D9 E6 41 out 41h,al ; port 41h, 8253 timer 1 refsh
F000:84DB B9 8000 mov cx,8000h
F000:84DE F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:84E0 33 F6 xor si,si ; Zero register
F000:84E2 B9 8000 mov cx,8000h
F000:84E5 F3/ AD rep lodsw ; Rep when cx >0 String [si] to ax
F000:84E7 B0 0B mov al,0Bh
F000:84E9 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:84EB B0 36 mov al,36h ; '6'
F000:84ED E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:84EF B0 00 mov al,0
F000:84F1 EB 00 jmp short loc_81 ; (84F3)
F000:84F3 loc_81: ; xref F000:84F1
F000:84F3 EB 00 jmp short loc_82 ; (84F5)
F000:84F5 loc_82: ; xref F000:84F3
F000:84F5 E6 40 out 40h,al ; port 40h, 8253 timer 0 clock
F000:84F7 EB 00 jmp short loc_83 ; (84F9)
F000:84F9 loc_83: ; xref F000:84F7
F000:84F9 EB 00 jmp short loc_84 ; (84FB)
F000:84FB loc_84: ; xref F000:84F9
F000:84FB E6 40 out 40h,al ; port 40h, 8253 timer 0 clock
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 24
F000:84FD B0 0C mov al,0Ch
F000:84FF E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:8501 33 DB xor bx,bx ; Zero register
F000:8503 B4 10 mov ah,10h
F000:8505 BA 0061 mov dx,61h
F000:8508 BC 850E mov sp,850Eh
F000:850B E9 0920 jmp loc_249 ; (8E2E)
F000:850E 10 85 E9 53 0B 00 db 10h, 85h, 0E9h, 53h, 0Bh, 0
F000:8514 858F data_72 dw offset sub_2 ; Data table (indexed access) (858F)
; xref F000:857B
F000:8516 866B data_73 dw offset sub_3 ; (866B)
; xref F000:857B
F000:8518 8674 data_74 dw offset sub_4 ; (8674)
; xref F000:857B
F000:851A 86C7 data_75 dw offset sub_7 ; (86C7)
; xref F000:857B
F000:851C 86DF data_76 dw offset sub_8 ; (86DF)
; xref F000:857B
F000:851E 8787 data_77 dw offset sub_9 ; (8787)
; xref F000:857B
F000:8520 87B6 data_78 dw offset sub_10 ; (87B6)
; xref F000:857B
F000:8522 87BA data_79 dw offset sub_11 ; (87BA)
; xref F000:857B
F000:8524 8917 data_80 dw offset sub_12 ; (8917)
; xref F000:857B
F000:8526 8A03 data_81 dw offset sub_13 ; (8A03)
; xref F000:857B
F000:8528 8A79 data_82 dw offset sub_14 ; (8A79)
; xref F000:857B
F000:852A 8BA0 data_83 dw offset sub_15 ; (8BA0)
; xref F000:857B
F000:852C 8BC5 data_84 dw offset sub_16 ; (8BC5)
; xref F000:857B
F000:852E 8BE2 data_85 dw offset sub_17 ; (8BE2)
; xref F000:857B
F000:8530 8BED data_86 dw offset sub_18 ; (8BED)
; xref F000:857B
F000:8532 8C36 data_87 dw offset sub_19 ; (8C36)
; xref F000:857B
F000:8534 8C49 data_88 dw offset sub_20 ; (8C49)
; xref F000:857B
F000:8536 8C49 data_89 dw offset sub_20 ; (8C49)
; xref F000:857B
F000:8538 8C49 data_90 dw offset sub_20 ; (8C49)
; xref F000:857B
F000:853A 8C4A data_91 dw offset sub_21 ; (8C4A)
; xref F000:857B
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 10h ▒▒▒▒▒
;
; VIDEO DISPLAY SERVICES
;
; Called with: ah = primary function number
;
; Returns: (unless otherwise indicated)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 25
; ax - altered (some systems may not alter ax)
;
; Functions:
; ah = 0 Set video display mode in al.
; ah = 1 Set cursor size
; Call with: ch = top line, 0-32
; cl = bottom line, 0-32
; ah = 2 Set cursor location
; Call with: bh = page number, 0 = 1st page
; dh = row (0 for top row)
; dl = column (0 for leftmost)
; ah = 3 Get cursor location
; Call with: bh = page number, 0 = 1st page
; Returns: ch/cl = cursor size (top & bottom)
; dh/dl = row and column of cursor
; ah = 4 Get light pen location
; Returns: ah = 0 not on/unsupported & bx,cx,dx changed
; 1 status valid
; bx = pixel column
; cx = horizontal line number
; dh/dl = row and column
; ah = 5 Set Page number al, 0 = 1st page
; ah = 6 Up scroll screen
; Call with: al = # bottom lines to clear, set 0 for all
; bh = attribute to fill cleared lines
; ch/cl = row/column of top left scroll corner
; dh/dl = row/column of bottom right scroll corner
; ah = 7 Down scroll screen
; Call with: al = # top lines to clear, set 0 for all
; bh = attribute to fill cleared lines
; ch/cl = row/column of top left scroll corner
; dh/dl = row/column of bottom right scroll corner
; ah = 8 Get character & attribute at cursor
; Call with: bh = page number, 0 = 1st page
; Returns: ah/al = attribute/character
; ah = 9 Write character & attribute at cursor (graphics modes)
; Call with: al = character
; bh = page number, 0 = 1st page
; bl = attribute, bit 7 = 1 to xor with old color
; cx = Number of same characters to write
; ah = 0Ah Write character at cursor (graphics modes)
; Call with: al = character
; bh = page number, 0 = 1st page
; cx = Number of same characters to write
; ah = 0Bh Set colors (typically in low res modes)
; Call with: bh = 0, bl = color low res background, border
; bh = 1, bl = 0/1 for low res color group 0/1
; ah = 0Ch Write graphics dot
; Call with: al = color, bit 7 = 1 to xor bit with old color
; cx/dx = pixel row/pixel column
; ah = 0Dh Read graphics dot
; Call with: cx/dx = pixel row/pixel column
; ah = 0Eh Write in ASCII mode (cr, lf, bell, and bs as operators)
; Call with: al/bl = character/color
; ah = 0Fh Get video info
; Returns: ah = columns active
; al = active video mode
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 26
; bh = active page, 0 = 1st page
; ah = 10h Colors (EGA/VGA) Called with al = subfunction
; al = 1 bl = color register (0-15) bh = color to set
; al = 2 es:dx = ptr to change all 16 colors & overscan #
; al = 3 bl = color high bit as: 0-intensity, 1-blink
; For VGA equipped systems only
; al = 7 bl = color register to get in bh
; al = 8 bh = returned overscan value
; al = 9 es:dx = ptr where to put all 16 colors & overscan
; al = 10h bx = color register to set; ch/cl/dl = grn/blu/red
; al = 12h es:dx = ptr to change color registers
; bx = 1st register to set, cx = # of registers
; al = 13h bl = 0, set color page mode in bh
; bl = 1, set page; bh = page number
; al = 15h bx = color reg to read; ch/cl/dl = grn/blu/red
; al = 17h es:dx = ptr where to load color regs
; bx = 1st register to get, cx = # of registers
; al = 1Ah get color page info; bl = mode; bh = page #
; ah = 11h Reset mode with new character set (leave memory as-is)
; al = 0 Character set load
; es:bp = ptr to table of chars
; bl/bh = which block/bytes per char
; cx/dx = # of characters/where to start in block
; al = 1 bl = block to load the mono character set
; al = 2 bl = block to load the double wide character set
; al = 3 bl = block select related to attribute
; al = 4 bl = block to load the 8 by 16 set (VGA)
; al = 10h - 14h same as 0 - 4, must occur after setting mode
; al = 20h es:bp = ptr to table of char, using int 1Fh ptr
; al = 21h es:bp = ptr to table of char, using int 43h ptr
; bl = 0-dl=# rows; 1-14 rows; 2-25 rows; 3-43 rows
; cx = number of bytes per character in table
; al = 22h use 8 by 14 char set, bl=rows (see al=21h)
; al = 23h use double wide char set, bl=rows (see al=21h)
; al = 24h use 8 by 16 char set, bl=rows (see al=21h)
; Get table pointer and info
; al = 30h es:bp = ptr returned; cx=bytes per char; dl=rows
; bh = 0, get int 1Fh bh = 4, get double wide
; bh = 1, get int 43h bh = 5, get mono 9 by 14
; bh = 2, get 8 by 14 bh = 6, get 8 by 16 (VGA)
; bh = 3, get double wide bh = 7, get 9 by 16 (VGA)
; ah = 12h Miscellaneous functions, bl = sub-function
; bl = 10h Get info, bh = 0-now color, 1-now mono
; ch/cl = info bits/switches
; bl = 20h Set print screen to work with EGA/VGA
; Functions for VGA only (bl = 30-34h return al = 12h)
; bl = 30h Set # of scan lines, 0-200, 1-350, 2-400
; activates after mode change
; bl = 31h ax = 0/1 allow/prevent palette load with new mode
; bl = 32h al = 0/1 video off/on
; bl = 33h al = 0/1 gray scale summing off/on
; bl = 34h al = 0/1 scale cursor size to font off/on
; bl = 35h switch between adapter and motherboard video
; al = 0, adapter off, es:dx = save state area
; al = 1, motherboard on
; al = 2, active video off, es:dx = save area
; al = 3, inactive video on, es:dx = save area
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 27
; bl = 36h al = 0/1 screen off/on
; ah = 13h Write character string (cr, lf, bell, and bs as operators)
; Call with: al = 0/1 write characters, cursor not/is moved
; bl = attribute of all characters
; = 2/3 write characters, cursor not/is moved
; string alternates character & attribute
; bh = page number, 0 = 1st page
; cx = number of characters
; dh/dl = row and column to start
; es:bp = ptr to character string
; ah = 14h LCD display support, al = sub-function
; al = 0, es:di = ptr to font table to load
; bl/bh = which block/bytes per char
; cx/dx = # of characters/where to start in block
; al = 1, bl = block # of ROM font to load
; al = 2, bl = how to support high intensity
; ah = 15h LCD info table ptr returned in es:di
; ax = 0 there is no alternate adapter
; ax = 5140h LCD is the alternate
; ax = 5153h CGA is alternate
; ax = 5151h MDA is alternate
;
; **** VGA SUPPORT ONLY ****
; ah = 1Ah Get/Set types of displays which are operating
; al = 0, get displays, returns al = 1Ah
; bl = in use display code
; bh = alternate display code
; al = 1, set codes, returns al = 1Ah
; bl = in use display code
; bh = alternate display code
; codes: 0 = no display
; 1 = mono display
; 2 = CGA
; 4 = EGA, color
; 5 = EGA, mono
; 6 = PGA
; 7 = VGA, mono (PS/2 MCA only)
; 8 = VGA, color (PS/2 MCA only)
; Bh = VGA, mono (PS/2 non MCA)
; Ch = VGA, color (PS/2 non MCA)
; FFh = display type not known
; ah = 1Bh Get video system information
; call with: bx = 0
; es:di = ptr to buffer where to put info
; ah = 1Ch Video system save & restore, al = sub-function
; call with: al = 0, get buffer size
; = 1, save system, buffer at es:bx
; = 2, restore system, buffer at es:bx
; cx bit 0 = 1 for hardware registers
; bit 1 = 1 for software states
; bit 2 = 1 for colors & DAC registers
F000:853C int_10h_video proc near ; xref F000:F065
F000:853C FB sti ; Enable interrupts
F000:853D FC cld ; Clear direction
F000:853E 80 FC 0E cmp ah,0Eh
F000:8541 74 40 je short loc_88 ; Jump if equal
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 28
F000:8543 80 FC 02 cmp ah,2
F000:8546 74 3E je short loc_89 ; Jump if equal
F000:8548 80 FC 03 cmp ah,3
F000:854B 74 3C je short loc_90 ; Jump if equal
F000:854D 80 FC 05 cmp ah,5
F000:8550 74 3A je short loc_91 ; Jump if equal
F000:8552 60 pusha ; Save all regs
F000:8553 1E push ds
F000:8554 06 push es
F000:8555 80 FC 13 cmp ah,13h
F000:8558 77 25 ja short loc_87 ; Jump if above
F000:855A 50 push ax
F000:855B 8A C4 mov al,ah
F000:855D 98 cbw ; Convrt byte to word
F000:855E 8B F8 mov di,ax
F000:8560 B8 0040 mov ax,seg_b
F000:8563 8E D8 mov ds,ax
F000:8565 74 10 jz short loc_86 ; Jump if zero
assume ds:seg_b
F000:8567 A0 0010 mov al,byte ptr equip_bits ; (0040:0010=61h)
F000:856A 24 30 and al,30h ; '0'
F000:856C 3C 30 cmp al,30h ; '0'
F000:856E B8 B000 mov ax,0B000h
F000:8571 74 02 jz short loc_85 ; Jump if zero
F000:8573 B4 B8 mov ah,0B8h
F000:8575 loc_85: ; xref F000:8571
F000:8575 8E C0 mov es,ax
F000:8577 loc_86: ; xref F000:8565
F000:8577 58 pop ax
F000:8578 D1 E7 shl di,1 ; Shift w/zeros fill
F000:857A 2E: FF 95 8514 call word ptr cs:data_72[di] ;*(F000:8514=858Fh) 20 entries
F000:857F loc_87: ; xref F000:8558
F000:857F 07 pop es
F000:8580 1F pop ds
F000:8581 61 popa ; Restore all regs
F000:8582 CF iret ; Interrupt return
int_10h_video endp
F000:8583 loc_88: ; xref F000:8541
F000:8583 E9 0667 jmp loc_197 ; (8BED)
F000:8586 loc_89: ; xref F000:8546
F000:8586 E9 00EB jmp loc_103 ; (8674)
F000:8589 loc_90: ; xref F000:854B
F000:8589 E9 013B jmp loc_109 ; (86C7)
F000:858C loc_91: ; xref F000:8550
F000:858C E9 01F8 jmp loc_127 ; (8787)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8514, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_2 proc near
F000:858F C6 06 0084 18 mov video_rows,18h ; (0040:0084=18h)
F000:8594 8C C2 mov dx,es
F000:8596 80 FE B0 cmp dh,0B0h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 29
F000:8599 BA 03D4 mov dx,3D4h
F000:859C 75 05 jnz short loc_92 ; Jump if not zero
F000:859E BA 03B4 mov dx,3B4h
F000:85A1 B0 07 mov al,7
F000:85A3 loc_92: ; xref F000:859C
F000:85A3 89 16 0063 mov @video_port,dx ; (0040:0063=3D4h)
F000:85A7 A2 0049 mov video_mode,al ; (0040:0049=3)
F000:85AA B4 3F mov ah,3Fh ; '?'
F000:85AC 3C 06 cmp al,6
F000:85AE 74 02 je short loc_93 ; Jump if equal
F000:85B0 B4 30 mov ah,30h ; '0'
F000:85B2 loc_93: ; xref F000:85AE
F000:85B2 88 26 0066 mov video_color,ah ; (0040:0066=30h)
F000:85B6 8A E0 mov ah,al
F000:85B8 BB F0F4 mov bx,0F0F4h
F000:85BB 2E: D7 xlat cs:[bx] ; al=[al+[bx]] table
F000:85BD A2 0065 mov video_mode_reg,al ; (0040:0065=29h)
F000:85C0 24 37 and al,37h ; '7'
F000:85C2 83 C2 04 add dx,4
F000:85C5 EE out dx,al ; port 3B8h, MDA video control
F000:85C6 83 EA 04 sub dx,4
F000:85C9 B0 28 mov al,28h ; '('
F000:85CB F6 C4 02 test ah,2
F000:85CE 74 02 jz short loc_94 ; Jump if zero
F000:85D0 B0 50 mov al,50h ; 'P'
F000:85D2 loc_94: ; xref F000:85CE
F000:85D2 8A DC mov bl,ah
F000:85D4 98 cbw ; Convrt byte to word
F000:85D5 A3 004A mov video_columns,ax ; (0040:004A=50h)
F000:85D8 B8 0800 mov ax,800h
F000:85DB 80 FB 01 cmp bl,1
F000:85DE 76 10 jbe short loc_95 ; Jump if below or =
F000:85E0 B8 1000 mov ax,1000h
F000:85E3 80 FB 03 cmp bl,3
F000:85E6 76 08 jbe short loc_95 ; Jump if below or =
F000:85E8 80 FB 07 cmp bl,7
F000:85EB 74 03 je short loc_95 ; Jump if equal
F000:85ED B8 4000 mov ax,4000h
F000:85F0 loc_95: ; xref F000:85DE, 85E6, 85EB
F000:85F0 A3 004C mov video_buf_siz,ax ; (0040:004C=10A0h)
F000:85F3 33 C0 xor ax,ax ; Zero register
F000:85F5 A3 004E mov video_segment,ax ; (0040:004E=0)
F000:85F8 A2 0062 mov video_page,al ; (0040:0062=0)
F000:85FB BF 0050 mov di,seg seg_c
F000:85FE B9 0008 mov cx,8
F000:8601 locloop_96: ; xref F000:8605
F000:8601 89 05 mov [di],ax
F000:8603 47 inc di
F000:8604 47 inc di
F000:8605 E2 FA loop locloop_96 ; Loop if cx > 0
F000:8607 53 push bx
F000:8608 06 push es
F000:8609 8E C1 mov es,cx
F000:860B 26: C4 36 0074 les si,dword ptr es:video_hdw_off ; (0000:0074=0F0A4h) Load 32 bit ptr
F000:8610 80 FB 06 cmp bl,6
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 30
F000:8613 75 02 jne short loc_97 ; Jump if not equal
F000:8615 FE CB dec bl
F000:8617 loc_97: ; xref F000:8613
F000:8617 D0 EB shr bl,1 ; Shift w/zeros fill
F000:8619 C0 E3 04 shl bl,4 ; Shift w/zeros fill
F000:861C 32 FF xor bh,bh ; Zero register
F000:861E 03 F3 add si,bx
F000:8620 B9 0010 mov cx,10h
F000:8623 locloop_98: ; xref F000:8633
F000:8623 8A C7 mov al,bh
F000:8625 EE out dx,al ; port 3B4h, MDA/EGA reg index
; al = 0, horiz char total
F000:8626 EB 00 jmp short loc_99 ; (8628)
F000:8628 loc_99: ; xref F000:8626
F000:8628 42 inc dx
F000:8629 26: 8A 04 mov al,es:[si]
F000:862C 46 inc si
F000:862D EE out dx,al ; port 3B5h, MDA/EGA indxd data
F000:862E EB 00 jmp short loc_100 ; (8630)
F000:8630 loc_100: ; xref F000:862E
F000:8630 FE C7 inc bh
F000:8632 4A dec dx
F000:8633 E2 EE loop locloop_98 ; Loop if cx > 0
F000:8635 26: 8B 44 FA mov ax,es:[si-6]
F000:8639 86 C4 xchg al,ah
F000:863B A3 0060 mov vid_curs_mode,ax ; (0040:0060=2000h)
F000:863E 07 pop es
F000:863F 5B pop bx
F000:8640 B9 0800 mov cx,800h
F000:8643 B8 0720 mov ax,720h
F000:8646 80 FB 07 cmp bl,7
F000:8649 74 0A je short loc_101 ; Jump if equal
F000:864B B9 2000 mov cx,2000h
F000:864E 80 FB 03 cmp bl,3
F000:8651 76 02 jbe short loc_101 ; Jump if below or =
F000:8653 33 C0 xor ax,ax ; Zero register
F000:8655 loc_101: ; xref F000:8649, 8651
F000:8655 33 FF xor di,di ; Zero register
F000:8657 FA cli ; Disable interrupts
F000:8658 FC cld ; Clear direction
F000:8659 F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:865B FB sti ; Enable interrupts
F000:865C A0 0065 mov al,video_mode_reg ; (0040:0065=29h)
F000:865F 83 C2 04 add dx,4
F000:8662 EE out dx,al ; port 3B8h, MDA video control
F000:8663 EB 00 jmp short loc_102 ; (8665)
F000:8665 loc_102: ; xref F000:8663
F000:8665 A0 0066 mov al,video_color ; (0040:0066=30h)
F000:8668 42 inc dx
F000:8669 EE out dx,al ; port 3B9h, CGA color(port3D9)
F000:866A C3 retn
sub_2 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 31
; SUBROUTINE
;
; Called from: F000:8516, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_3 proc near
F000:866B 89 0E 0060 mov vid_curs_mode,cx ; (0040:0060=2000h)
F000:866F B0 0A mov al,0Ah
F000:8671 EB 3A jmp short loc_105 ; (86AD)
F000:8673 90 db 90h
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:8518, 857B
sub_4:
F000:8674 loc_103: ; xref F000:8586
F000:8674 1E push ds
F000:8675 50 push ax
F000:8676 53 push bx
F000:8677 51 push cx
F000:8678 52 push dx
F000:8679 B8 0040 mov ax,seg_b
F000:867C 8E D8 mov ds,ax
F000:867E 8A C7 mov al,bh
F000:8680 8A DF mov bl,bh
F000:8682 32 FF xor bh,bh ; Zero register
F000:8684 D1 E3 shl bx,1 ; Shift w/zeros fill
F000:8686 89 97 0050 mov [bx+50h],dx
nop ;*Fixup for MASM (M)
F000:868A 3A 06 0062 cmp al,video_page ; (0040:0062=0)
F000:868E 75 03 jne short loc_104 ; Jump if not equal
F000:8690 E8 0006 call sub_5 ; (8699)
F000:8693 loc_104: ; xref F000:868E
F000:8693 5A pop dx
F000:8694 59 pop cx
F000:8695 5B pop bx
F000:8696 58 pop ax
F000:8697 1F pop ds
F000:8698 CF iret ; Interrupt return
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:8690, 87AD
sub_5:
F000:8699 8A C6 mov al,dh
F000:869B F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:869F 32 F6 xor dh,dh ; Zero register
F000:86A1 03 C2 add ax,dx
F000:86A3 8B 0E 004E mov cx,video_segment ; (0040:004E=0)
F000:86A7 D1 E9 shr cx,1 ; Shift w/zeros fill
F000:86A9 03 C8 add cx,ax
F000:86AB B0 0E mov al,0Eh
sub_3 endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 32
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:87A4
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_6 proc near
F000:86AD loc_105: ; xref F000:8671
F000:86AD 8B 16 0063 mov dx,@video_port ; (0040:0063=3D4h)
F000:86B1 EE out dx,al ; port 3D4h, CGA/EGA reg index
; al = 0Ch, start address high
F000:86B2 EB 00 jmp short loc_106 ; (86B4)
F000:86B4 loc_106: ; xref F000:86B2
F000:86B4 42 inc dx
F000:86B5 86 C5 xchg al,ch
F000:86B7 EE out dx,al ; port 3D5h, CGA/EGA indxd data
F000:86B8 FE C5 inc ch
F000:86BA EB 00 jmp short loc_107 ; (86BC)
F000:86BC loc_107: ; xref F000:86BA
F000:86BC 4A dec dx
F000:86BD 86 C5 xchg al,ch
F000:86BF EE out dx,al ; port 3D4h, CGA/EGA reg index
; al = 0Dh, start address low
F000:86C0 EB 00 jmp short loc_108 ; (86C2)
F000:86C2 loc_108: ; xref F000:86C0
F000:86C2 42 inc dx
F000:86C3 86 C1 xchg al,cl
F000:86C5 EE out dx,al ; port 3D5h, CGA/EGA indxd data
F000:86C6 C3 retn
sub_6 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:851A, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_7 proc near
F000:86C7 loc_109: ; xref F000:8589
F000:86C7 1E push ds
F000:86C8 53 push bx
F000:86C9 8A DF mov bl,bh
F000:86CB 32 FF xor bh,bh ; Zero register
F000:86CD D1 E3 shl bx,1 ; Shift w/zeros fill
F000:86CF BA 0040 mov dx,seg seg_b
F000:86D2 8E DA mov ds,dx
F000:86D4 8B 97 0050 mov dx,[bx+50h]
nop ;*Fixup for MASM (M)
F000:86D8 8B 0E 0060 mov cx,vid_curs_mode ; (0040:0060=2000h)
F000:86DC 5B pop bx
F000:86DD 1F pop ds
F000:86DE CF iret ; Interrupt return
sub_7 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 33
; SUBROUTINE
;
; Called from: F000:851C, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_8 proc near
F000:86DF 8B EC mov bp,sp
F000:86E1 8B 16 0063 mov dx,@video_port ; (0040:0063=3D4h)
F000:86E5 83 C2 06 add dx,6
F000:86E8 8B F2 mov si,dx
F000:86EA EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:86EB A8 04 test al,4
F000:86ED B4 00 mov ah,0
F000:86EF 74 03 jz short loc_110 ; Jump if zero
F000:86F1 E9 008B jmp loc_125 ; (877F)
F000:86F4 loc_110: ; xref F000:86EF
F000:86F4 A8 02 test al,2
F000:86F6 75 03 jnz short loc_111 ; Jump if not zero
F000:86F8 E9 0088 jmp loc_126 ; (8783)
F000:86FB loc_111: ; xref F000:86F6
F000:86FB 83 EA 06 sub dx,6
F000:86FE B0 10 mov al,10h
F000:8700 B5 11 mov ch,11h
F000:8702 EE out dx,al ; port 3D4h, CGA/EGA reg index
; al = 10h, light pen high
F000:8703 EB 00 jmp short loc_112 ; (8705)
F000:8705 loc_112: ; xref F000:8703
F000:8705 EB 00 jmp short loc_113 ; (8707)
F000:8707 loc_113: ; xref F000:8705
F000:8707 42 inc dx
F000:8708 EC in al,dx ; port 3D5h, CGA/EGA indxd data
F000:8709 86 C5 xchg al,ch
F000:870B 4A dec dx
F000:870C EB 00 jmp short loc_114 ; (870E)
F000:870E loc_114: ; xref F000:870C
F000:870E EB 00 jmp short loc_115 ; (8710)
F000:8710 loc_115: ; xref F000:870E
F000:8710 EE out dx,al ; port 3D4h, CGA/EGA reg index
; al = 11h, light pen low
F000:8711 EB 00 jmp short loc_116 ; (8713)
F000:8713 loc_116: ; xref F000:8711
F000:8713 EB 00 jmp short loc_117 ; (8715)
F000:8715 loc_117: ; xref F000:8713
F000:8715 42 inc dx
F000:8716 EC in al,dx ; port 3D5h, CGA/EGA indxd data
F000:8717 86 C1 xchg al,cl
F000:8719 A1 004E mov ax,video_segment ; (0040:004E=0)
F000:871C D1 E8 shr ax,1 ; Shift w/zeros fill
F000:871E 2B C8 sub cx,ax
F000:8720 A0 0049 mov al,video_mode ; (0040:0049=3)
F000:8723 BB F0FC mov bx,0F0FCh
F000:8726 2E: D7 xlat cs:[bx] ; al=[al+[bx]] table
F000:8728 2B C8 sub cx,ax
F000:872A 79 02 jns short loc_118 ; Jump if not sign
F000:872C 33 C9 xor cx,cx ; Zero register
F000:872E loc_118: ; xref F000:872A
F000:872E 8A 26 0049 mov ah,video_mode ; (0040:0049=3)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 34
F000:8732 80 FC 04 cmp ah,4
F000:8735 72 04 jb short loc_119 ; Jump if below
F000:8737 80 FC 07 cmp ah,7
F000:873A F5 cmc ; Complement carry
F000:873B loc_119: ; xref F000:8735
F000:873B A0 004A mov al,byte ptr video_columns ; (0040:004A=50h)
F000:873E 91 xchg ax,cx
F000:873F 72 02 jc short loc_120 ; Jump if carry Set
F000:8741 B1 28 mov cl,28h ; '('
F000:8743 loc_120: ; xref F000:873F
F000:8743 F6 F1 div cl ; al, ah rem = ax/reg
F000:8745 8A E8 mov ch,al
F000:8747 86 C4 xchg al,ah
F000:8749 8B D0 mov dx,ax
F000:874B 98 cbw ; Convrt byte to word
F000:874C 8B D8 mov bx,ax
F000:874E 8A 26 0049 mov ah,video_mode ; (0040:0049=3)
F000:8752 80 FC 04 cmp ah,4
F000:8755 72 04 jb short loc_121 ; Jump if below
F000:8757 80 FC 07 cmp ah,7
F000:875A F5 cmc ; Complement carry
F000:875B loc_121: ; xref F000:8755
F000:875B 72 11 jc short loc_122 ; Jump if carry Set
F000:875D D0 E5 shl ch,1 ; Shift w/zeros fill
F000:875F C0 EE 02 shr dh,2 ; Shift w/zeros fill
F000:8762 80 FC 06 cmp ah,6
F000:8765 75 0A jne short loc_123 ; Jump if not equal
F000:8767 D0 E2 shl dl,1 ; Shift w/zeros fill
F000:8769 C1 E3 04 shl bx,4 ; Shift w/zeros fill
F000:876C EB 06 jmp short loc_124 ; (8774)
F000:876E loc_122: ; xref F000:875B
F000:876E C0 E5 03 shl ch,3 ; Shift w/zeros fill
F000:8771 loc_123: ; xref F000:8765
F000:8771 C1 E3 03 shl bx,3 ; Shift w/zeros fill
F000:8774 loc_124: ; xref F000:876C
F000:8774 89 56 10 mov [bp+10h],dx
F000:8777 88 6E 13 mov [bp+13h],ch
F000:877A 89 5E 0E mov [bp+0Eh],bx
F000:877D B4 01 mov ah,1
F000:877F loc_125: ; xref F000:86F1
F000:877F 8B D6 mov dx,si
F000:8781 42 inc dx
F000:8782 EE out dx,al ; port 3DBh, CGA light pen clr
F000:8783 loc_126: ; xref F000:86F8
F000:8783 88 66 15 mov [bp+15h],ah
F000:8786 C3 retn
sub_8 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:851E, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_9 proc near
F000:8787 loc_127: ; xref F000:858C
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 35
F000:8787 1E push ds
F000:8788 50 push ax
F000:8789 53 push bx
F000:878A 51 push cx
F000:878B 52 push dx
F000:878C BA 0040 mov dx,seg seg_b
F000:878F 8E DA mov ds,dx
F000:8791 A2 0062 mov video_page,al ; (0040:0062=0)
F000:8794 98 cbw ; Convrt byte to word
F000:8795 8B D8 mov bx,ax
F000:8797 F7 26 004C mul video_buf_siz ; (0040:004C=10A0h) ax = data * ax
F000:879B A3 004E mov video_segment,ax ; (0040:004E=0)
F000:879E D1 E8 shr ax,1 ; Shift w/zeros fill
F000:87A0 8B C8 mov cx,ax
F000:87A2 B0 0C mov al,0Ch
F000:87A4 E8 FF06 call sub_6 ; (86AD)
F000:87A7 D1 E3 shl bx,1 ; Shift w/zeros fill
F000:87A9 8B 97 0050 mov dx,[bx+50h]
nop ;*Fixup for MASM (M)
F000:87AD E8 FEE9 call sub_5 ; (8699)
F000:87B0 5A pop dx
F000:87B1 59 pop cx
F000:87B2 5B pop bx
F000:87B3 58 pop ax
F000:87B4 1F pop ds
F000:87B5 CF iret ; Interrupt return
sub_9 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8520, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_10 proc near
F000:87B6 32 DB xor bl,bl ; Zero register
F000:87B8 EB 05 jmp short loc_128 ; (87BF)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:8522, 857B
sub_11:
F000:87BA B3 FF mov bl,0FFh
F000:87BC 8B F2 mov si,dx
F000:87BE FD std ; Set direction flag
F000:87BF loc_128: ; xref F000:87B8
F000:87BF 1E push ds
F000:87C0 53 push bx
F000:87C1 2B D1 sub dx,cx
F000:87C3 81 C2 0101 add dx,101h
F000:87C7 52 push dx
F000:87C8 50 push ax
F000:87C9 8A 26 0049 mov ah,video_mode ; (0040:0049=3)
F000:87CD 80 FC 04 cmp ah,4
F000:87D0 72 04 jb short loc_129 ; Jump if below
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 36
F000:87D2 80 FC 07 cmp ah,7
F000:87D5 F5 cmc ; Complement carry
F000:87D6 loc_129: ; xref F000:87D0
F000:87D6 BA 0028 mov dx,28h
F000:87D9 73 20 jnc short loc_133 ; Jump if carry=0
F000:87DB 80 FC 02 cmp ah,2
F000:87DE 74 05 je short loc_130 ; Jump if equal
F000:87E0 80 FC 03 cmp ah,3
F000:87E3 75 12 jne short loc_132 ; Jump if not equal
F000:87E5 loc_130: ; xref F000:87DE
F000:87E5 BA 03DA mov dx,3DAh
F000:87E8 51 push cx
F000:87E9 33 C9 xor cx,cx ; Zero register
F000:87EB locloop_131: ; xref F000:87EE
F000:87EB EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:87EC A8 08 test al,8
F000:87EE E1 FB loopz locloop_131 ; Loop if zf=1, cx>0
F000:87F0 59 pop cx
F000:87F1 B0 25 mov al,25h ; '%'
F000:87F3 BA 03D8 mov dx,3D8h
F000:87F6 EE out dx,al ; port 3D8h, CGA video control
F000:87F7 loc_132: ; xref F000:87E3
F000:87F7 8B 16 004A mov dx,video_columns ; (0040:004A=50h)
F000:87FB loc_133: ; xref F000:87D9
F000:87FB 8B EA mov bp,dx
F000:87FD D1 E5 shl bp,1 ; Shift w/zeros fill
F000:87FF 22 DB and bl,bl
F000:8801 74 04 jz short loc_134 ; Jump if zero
F000:8803 F7 DD neg bp
F000:8805 8B CE mov cx,si
F000:8807 loc_134: ; xref F000:8801
F000:8807 8A 26 0049 mov ah,video_mode ; (0040:0049=3)
F000:880B 80 FC 04 cmp ah,4
F000:880E 72 04 jb short loc_135 ; Jump if below
F000:8810 80 FC 07 cmp ah,7
F000:8813 F5 cmc ; Complement carry
F000:8814 loc_135: ; xref F000:880E
F000:8814 91 xchg ax,cx
F000:8815 8A CA mov cl,dl
F000:8817 8B D0 mov dx,ax
F000:8819 73 16 jnc short loc_136 ; Jump if carry=0
F000:881B 8A C6 mov al,dh
F000:881D F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:8821 32 F6 xor dh,dh ; Zero register
F000:8823 03 C2 add ax,dx
F000:8825 D1 E0 shl ax,1 ; Shift w/zeros fill
F000:8827 03 06 004E add ax,video_segment ; (0040:004E=0)
F000:882B 8B F8 mov di,ax
F000:882D 58 pop ax
F000:882E 5A pop dx
F000:882F EB 2D jmp short loc_139 ; (885E)
F000:8831 loc_136: ; xref F000:8819
F000:8831 8A C6 mov al,dh
F000:8833 F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:8837 C1 E0 02 shl ax,2 ; Shift w/zeros fill
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 37
F000:883A 32 F6 xor dh,dh ; Zero register
F000:883C 03 C2 add ax,dx
F000:883E 8B F8 mov di,ax
F000:8840 58 pop ax
F000:8841 5A pop dx
F000:8842 C0 E6 02 shl dh,2 ; Shift w/zeros fill
F000:8845 80 FD 06 cmp ch,6
F000:8848 74 09 je short loc_137 ; Jump if equal
F000:884A D1 E7 shl di,1 ; Shift w/zeros fill
F000:884C D0 E2 shl dl,1 ; Shift w/zeros fill
F000:884E 22 DB and bl,bl
F000:8850 74 01 jz short loc_137 ; Jump if zero
F000:8852 47 inc di
F000:8853 loc_137: ; xref F000:8848, 8850
F000:8853 22 DB and bl,bl
F000:8855 74 04 jz short loc_138 ; Jump if zero
F000:8857 81 C7 00F0 add di,0F0h
F000:885B loc_138: ; xref F000:8855
F000:885B C0 E0 02 shl al,2 ; Shift w/zeros fill
F000:885E loc_139: ; xref F000:882F
F000:885E 06 push es
F000:885F 1F pop ds
F000:8860 8A FE mov bh,dh
F000:8862 0A C0 or al,al ; Zero ?
F000:8864 74 68 jz short loc_145 ; Jump if zero
F000:8866 2A F0 sub dh,al
F000:8868 74 64 jz short loc_145 ; Jump if zero
F000:886A 8A F8 mov bh,al
F000:886C F6 E1 mul cl ; ax = reg * al
F000:886E D1 E0 shl ax,1 ; Shift w/zeros fill
F000:8870 22 DB and bl,bl
F000:8872 74 02 jz short loc_140 ; Jump if zero
F000:8874 F7 D8 neg ax
F000:8876 loc_140: ; xref F000:8872
F000:8876 8B F7 mov si,di
F000:8878 03 F0 add si,ax
F000:887A 32 E4 xor ah,ah ; Zero register
F000:887C 86 E5 xchg ah,ch
F000:887E 80 FC 04 cmp ah,4
F000:8881 72 04 jb short loc_141 ; Jump if below
F000:8883 80 FC 07 cmp ah,7
F000:8886 F5 cmc ; Complement carry
F000:8887 loc_141: ; xref F000:8881
F000:8887 53 push bx
F000:8888 72 55 jc short loc_147 ; Jump if carry Set
F000:888A loc_142: ; xref F000:88AC
F000:888A 8B C6 mov ax,si
F000:888C 8B DF mov bx,di
F000:888E 8A CA mov cl,dl
F000:8890 F3/ A4 rep movsb ; Rep when cx >0 Mov [si] to es:[di]
F000:8892 8B FB mov di,bx
F000:8894 8B F0 mov si,ax
F000:8896 81 C6 2000 add si,2000h
F000:889A 81 C7 2000 add di,2000h
F000:889E 8A CA mov cl,dl
F000:88A0 F3/ A4 rep movsb ; Rep when cx >0 Mov [si] to es:[di]
F000:88A2 8B FB mov di,bx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 38
F000:88A4 8B F0 mov si,ax
F000:88A6 03 F5 add si,bp
F000:88A8 03 FD add di,bp
F000:88AA FE CE dec dh
F000:88AC 75 DC jnz loc_142 ; Jump if not zero
F000:88AE 5B pop bx
F000:88AF loc_143: ; xref F000:88DB
F000:88AF 58 pop ax
F000:88B0 8A C4 mov al,ah
F000:88B2 8A F7 mov dh,bh
F000:88B4 loc_144: ; xref F000:88CA
F000:88B4 8B DF mov bx,di
F000:88B6 8A CA mov cl,dl
F000:88B8 F3/ AA rep stosb ; Rep when cx >0 Store al to es:[di]
F000:88BA 8B FB mov di,bx
F000:88BC 81 C7 2000 add di,2000h
F000:88C0 8A CA mov cl,dl
F000:88C2 F3/ AA rep stosb ; Rep when cx >0 Store al to es:[di]
F000:88C4 8B FB mov di,bx
F000:88C6 03 FD add di,bp
F000:88C8 FE CE dec dh
F000:88CA 75 E8 jnz loc_144 ; Jump if not zero
F000:88CC 1F pop ds
F000:88CD C3 retn
F000:88CE loc_145: ; xref F000:8864, 8868
F000:88CE 32 E4 xor ah,ah ; Zero register
F000:88D0 86 E5 xchg ah,ch
F000:88D2 80 FC 04 cmp ah,4
F000:88D5 72 04 jb short loc_146 ; Jump if below
F000:88D7 80 FC 07 cmp ah,7
F000:88DA F5 cmc ; Complement carry
F000:88DB loc_146: ; xref F000:88D5
F000:88DB 73 D2 jnc loc_143 ; Jump if carry=0
F000:88DD EB 15 jmp short loc_148 ; (88F4)
F000:88DF loc_147: ; xref F000:8888, 88F1
F000:88DF 8B C6 mov ax,si
F000:88E1 8B DF mov bx,di
F000:88E3 8A CA mov cl,dl
F000:88E5 F3/ A5 rep movsw ; Rep when cx >0 Mov [si] to es:[di]
F000:88E7 8B FB mov di,bx
F000:88E9 8B F0 mov si,ax
F000:88EB 03 F5 add si,bp
F000:88ED 03 FD add di,bp
F000:88EF FE CE dec dh
F000:88F1 75 EC jnz loc_147 ; Jump if not zero
F000:88F3 5B pop bx
F000:88F4 loc_148: ; xref F000:88DD
F000:88F4 58 pop ax
F000:88F5 B0 20 mov al,20h ; ' '
F000:88F7 8A F7 mov dh,bh
F000:88F9 loc_149: ; xref F000:8905
F000:88F9 8B DF mov bx,di
F000:88FB 8A CA mov cl,dl
F000:88FD F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:88FF 8B FB mov di,bx
F000:8901 03 FD add di,bp
F000:8903 FE CE dec dh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 39
F000:8905 75 F2 jnz loc_149 ; Jump if not zero
F000:8907 1F pop ds
assume ds:seg_a
F000:8908 80 3E 0049 07 cmp byte ptr vectr_12h_off+1,7 ; (0000:0049=0F8h)
F000:890D 74 07 je short loc_ret_150 ; Jump if equal
F000:890F A0 0065 mov al,ds:data_3e ; (0000:0065=0)
F000:8912 BA 03D8 mov dx,3D8h
F000:8915 EE out dx,al ; port 3D8h, CGA video control
F000:8916 loc_ret_150: ; xref F000:890D
F000:8916 C3 retn
sub_10 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8524, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_12 proc near
F000:8917 8B EC mov bp,sp
assume ds:seg_b
F000:8919 8A 26 0049 mov ah,video_mode ; (0040:0049=3)
F000:891D 80 FC 07 cmp ah,7
F000:8920 74 05 je short loc_151 ; Jump if equal
F000:8922 80 FC 04 cmp ah,4
F000:8925 73 56 jae short loc_156 ; Jump if above or =
F000:8927 loc_151: ; xref F000:8920
F000:8927 8A DF mov bl,bh
F000:8929 32 FF xor bh,bh ; Zero register
F000:892B D1 E3 shl bx,1 ; Shift w/zeros fill
F000:892D 8B 97 0050 mov dx,[bx+50h]
nop ;*Fixup for MASM (M)
F000:8931 8A C6 mov al,dh
F000:8933 F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:8937 32 F6 xor dh,dh ; Zero register
F000:8939 03 C2 add ax,dx
F000:893B D1 E0 shl ax,1 ; Shift w/zeros fill
F000:893D D1 EB shr bx,1 ; Shift w/zeros fill
F000:893F 93 xchg ax,bx
F000:8940 F7 26 004C mul video_buf_siz ; (0040:004C=10A0h) ax = data * ax
F000:8944 03 C3 add ax,bx
F000:8946 8B F0 mov si,ax
F000:8948 FA cli ; Disable interrupts
F000:8949 FC cld ; Clear direction
F000:894A 80 3E 0049 07 cmp video_mode,7 ; (0040:0049=3)
F000:894F 74 26 je short loc_155 ; Jump if equal
F000:8951 80 3E 0049 02 cmp video_mode,2 ; (0040:0049=3)
F000:8956 72 1F jb short loc_155 ; Jump if below
F000:8958 8B 16 0063 mov dx,@video_port ; (0040:0063=3D4h)
F000:895C 83 C2 06 add dx,6
F000:895F 33 C9 xor cx,cx ; Zero register
F000:8961 locloop_152: ; xref F000:896C
F000:8961 FB sti ; Enable interrupts
F000:8962 FC cld ; Clear direction
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 40
F000:8963 FA cli ; Disable interrupts
F000:8964 FC cld ; Clear direction
F000:8965 EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:8966 A8 08 test al,8
F000:8968 75 0D jnz short loc_155 ; Jump if not zero
F000:896A A8 01 test al,1
F000:896C E0 F3 loopnz locloop_152 ; Loop if zf=0, cx>0
F000:896E 33 C9 xor cx,cx ; Zero register
F000:8970 locloop_153: ; xref F000:8975
F000:8970 EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:8971 EB 00 jmp short loc_154 ; (8973)
F000:8973 loc_154: ; xref F000:8971
F000:8973 A8 09 test al,9
F000:8975 E1 F9 loopz locloop_153 ; Loop if zf=1, cx>0
F000:8977 loc_155: ; xref F000:894F, 8956, 8968
F000:8977 26: AD lods word ptr es:[si] ; String [si] to ax
F000:8979 FB sti ; Enable interrupts
F000:897A E9 0080 jmp loc_161 ; (89FD)
F000:897D loc_156: ; xref F000:8925
F000:897D BF 0008 mov di,8
F000:8980 2B E7 sub sp,di
F000:8982 F7 DF neg di
F000:8984 BB 2000 mov bx,2000h
F000:8987 8B 16 0050 mov dx,vid_curs_pos0 ; (0040:0050=184Fh)
F000:898B 8A C6 mov al,dh
F000:898D F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:8991 C1 E0 02 shl ax,2 ; Shift w/zeros fill
F000:8994 32 F6 xor dh,dh ; Zero register
F000:8996 03 C2 add ax,dx
F000:8998 8B F0 mov si,ax
F000:899A 80 3E 0049 06 cmp video_mode,6 ; (0040:0049=3)
F000:899F 8C C1 mov cx,es
F000:89A1 8E D9 mov ds,cx
F000:89A3 74 13 jz short loc_158 ; Jump if zero
F000:89A5 D1 E6 shl si,1 ; Shift w/zeros fill
F000:89A7 loc_157: ; xref F000:89B4
F000:89A7 8B 04 mov ax,[si]
F000:89A9 E8 0370 call sub_25 ; (8D1C)
F000:89AC 8B 00 mov ax,[bx+si]
F000:89AE 83 C6 50 add si,50h
F000:89B1 E8 0368 call sub_25 ; (8D1C)
F000:89B4 75 F1 jnz loc_157 ; Jump if not zero
F000:89B6 EB 0F jmp short loc_159 ; (89C7)
F000:89B8 loc_158: ; xref F000:89A3, 89C5
F000:89B8 8A 04 mov al,[si]
F000:89BA 88 03 mov [bp+di],al
F000:89BC 47 inc di
F000:89BD 8A 00 mov al,[bx+si]
F000:89BF 83 C6 50 add si,50h
F000:89C2 88 03 mov [bp+di],al
F000:89C4 47 inc di
F000:89C5 75 F1 jnz loc_158 ; Jump if not zero
F000:89C7 loc_159: ; xref F000:89B6
F000:89C7 8C D7 mov di,ss
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 41
F000:89C9 8E DF mov ds,di
F000:89CB 8C CF mov di,cs
F000:89CD 8E C7 mov es,di
F000:89CF BF FA6E mov di,0FA6Eh
F000:89D2 32 C0 xor al,al ; Zero register
F000:89D4 loc_160: ; xref F000:89E8, 89FB
F000:89D4 8B F4 mov si,sp
F000:89D6 B9 0008 mov cx,8
F000:89D9 FA cli ; Disable interrupts
F000:89DA FC cld ; Clear direction
F000:89DB F3/ A6 repe cmpsb ; Rep zf=1+cx >0 Cmp [si] to es:[di]
F000:89DD FB sti ; Enable interrupts
F000:89DE 74 1D jz short loc_161 ; Jump if zero
F000:89E0 FE C0 inc al
F000:89E2 74 19 jz short loc_161 ; Jump if zero
F000:89E4 03 F9 add di,cx
F000:89E6 3C 80 cmp al,80h
F000:89E8 75 EA jne loc_160 ; Jump if not equal
F000:89EA 33 C0 xor ax,ax ; Zero register
F000:89EC 8E C0 mov es,ax
F000:89EE 26: C4 3E 007C les di,dword ptr es:graph_tbl_off ; (0000:007C=4CF0h) Load 32 bit ptr
F000:89F3 8C C1 mov cx,es
F000:89F5 0B CF or cx,di
F000:89F7 74 04 jz short loc_161 ; Jump if zero
F000:89F9 B0 80 mov al,80h
F000:89FB EB D7 jmp short loc_160 ; (89D4)
F000:89FD loc_161: ; xref F000:897A, 89DE, 89E2, 89F7
F000:89FD 89 46 14 mov [bp+14h],ax
F000:8A00 8B E5 mov sp,bp
F000:8A02 C3 retn
sub_12 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8526, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_13 proc near
F000:8A03 8A 26 0049 mov ah,video_mode ; (0040:0049=3)
F000:8A07 80 FC 07 cmp ah,7
F000:8A0A 74 05 je short loc_162 ; Jump if equal
F000:8A0C 80 FC 04 cmp ah,4
F000:8A0F 73 74 jae short loc_171 ; Jump if above or =
F000:8A11 loc_162: ; xref F000:8A0A
F000:8A11 8A E3 mov ah,bl
F000:8A13 50 push ax
F000:8A14 8A DF mov bl,bh
F000:8A16 32 FF xor bh,bh ; Zero register
F000:8A18 D1 E3 shl bx,1 ; Shift w/zeros fill
F000:8A1A 8B 97 0050 mov dx,[bx+50h]
nop ;*Fixup for MASM (M)
F000:8A1E 8A C6 mov al,dh
F000:8A20 F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:8A24 32 F6 xor dh,dh ; Zero register
F000:8A26 03 C2 add ax,dx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 42
F000:8A28 D1 E0 shl ax,1 ; Shift w/zeros fill
F000:8A2A D1 EB shr bx,1 ; Shift w/zeros fill
F000:8A2C 93 xchg ax,bx
F000:8A2D F7 26 004C mul video_buf_siz ; (0040:004C=10A0h) ax = data * ax
F000:8A31 03 C3 add ax,bx
F000:8A33 8B F8 mov di,ax
F000:8A35 58 pop ax
F000:8A36 80 3E 0049 07 cmp video_mode,7 ; (0040:0049=3)
F000:8A3B 74 07 je short loc_163 ; Jump if equal
F000:8A3D 80 3E 0049 02 cmp video_mode,2 ; (0040:0049=3)
F000:8A42 73 0A jae short loc_165 ; Jump if above or =
F000:8A44 loc_163: ; xref F000:8A3B
F000:8A44 FA cli ; Disable interrupts
F000:8A45 FC cld ; Clear direction
F000:8A46 AB stosw ; Store ax to es:[di]
F000:8A47 49 dec cx
F000:8A48 74 02 jz short loc_164 ; Jump if zero
F000:8A4A F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:8A4C loc_164: ; xref F000:8A48
F000:8A4C FB sti ; Enable interrupts
F000:8A4D C3 retn
F000:8A4E loc_165: ; xref F000:8A42
F000:8A4E 8B D8 mov bx,ax
F000:8A50 8B F1 mov si,cx
F000:8A52 8B 16 0063 mov dx,@video_port ; (0040:0063=3D4h)
F000:8A56 83 C2 06 add dx,6
F000:8A59 loc_166: ; xref F000:8A76
F000:8A59 33 C9 xor cx,cx ; Zero register
F000:8A5B locloop_167: ; xref F000:8A66
F000:8A5B FB sti ; Enable interrupts
F000:8A5C FC cld ; Clear direction
F000:8A5D FA cli ; Disable interrupts
F000:8A5E FC cld ; Clear direction
F000:8A5F EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:8A60 A8 08 test al,8
F000:8A62 75 0D jnz short loc_170 ; Jump if not zero
F000:8A64 A8 01 test al,1
F000:8A66 E0 F3 loopnz locloop_167 ; Loop if zf=0, cx>0
F000:8A68 33 C9 xor cx,cx ; Zero register
F000:8A6A locloop_168: ; xref F000:8A6F
F000:8A6A EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:8A6B EB 00 jmp short loc_169 ; (8A6D)
F000:8A6D loc_169: ; xref F000:8A6B
F000:8A6D A8 09 test al,9
F000:8A6F E1 F9 loopz locloop_168 ; Loop if zf=1, cx>0
F000:8A71 loc_170: ; xref F000:8A62
F000:8A71 8B C3 mov ax,bx
F000:8A73 AB stosw ; Store ax to es:[di]
F000:8A74 FB sti ; Enable interrupts
F000:8A75 4E dec si
F000:8A76 75 E1 jnz loc_166 ; Jump if not zero
F000:8A78 C3 retn
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 43
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:8528, 857B
sub_14:
F000:8A79 8A 26 0049 mov ah,video_mode ; (0040:0049=3)
F000:8A7D 80 FC 07 cmp ah,7
F000:8A80 74 05 je short loc_172 ; Jump if equal
F000:8A82 80 FC 04 cmp ah,4
F000:8A85 loc_171: ; xref F000:8A0F
F000:8A85 73 65 jae short loc_181 ; Jump if above or =
F000:8A87 loc_172: ; xref F000:8A80
F000:8A87 50 push ax
F000:8A88 8A DF mov bl,bh
F000:8A8A 32 FF xor bh,bh ; Zero register
F000:8A8C D1 E3 shl bx,1 ; Shift w/zeros fill
F000:8A8E 8B 97 0050 mov dx,[bx+50h]
nop ;*Fixup for MASM (M)
F000:8A92 8A C6 mov al,dh
F000:8A94 F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:8A98 32 F6 xor dh,dh ; Zero register
F000:8A9A 03 C2 add ax,dx
F000:8A9C D1 E0 shl ax,1 ; Shift w/zeros fill
F000:8A9E D1 EB shr bx,1 ; Shift w/zeros fill
F000:8AA0 93 xchg ax,bx
F000:8AA1 F7 26 004C mul video_buf_siz ; (0040:004C=10A0h) ax = data * ax
F000:8AA5 03 C3 add ax,bx
F000:8AA7 8B F8 mov di,ax
F000:8AA9 58 pop ax
F000:8AAA 80 3E 0049 07 cmp video_mode,7 ; (0040:0049=3)
F000:8AAF 74 07 je short loc_173 ; Jump if equal
F000:8AB1 80 3E 0049 02 cmp video_mode,2 ; (0040:0049=3)
F000:8AB6 73 08 jae short loc_175 ; Jump if above or =
F000:8AB8 loc_173: ; xref F000:8AAF
F000:8AB8 FA cli ; Disable interrupts
F000:8AB9 FC cld ; Clear direction
F000:8ABA locloop_174: ; xref F000:8ABC
F000:8ABA AA stosb ; Store al to es:[di]
F000:8ABB 47 inc di
F000:8ABC E2 FC loop locloop_174 ; Loop if cx > 0
F000:8ABE FB sti ; Enable interrupts
F000:8ABF C3 retn
F000:8AC0 loc_175: ; xref F000:8AB6
F000:8AC0 8A D8 mov bl,al
F000:8AC2 8B F1 mov si,cx
F000:8AC4 8B 16 0063 mov dx,@video_port ; (0040:0063=3D4h)
F000:8AC8 83 C2 06 add dx,6
F000:8ACB loc_176: ; xref F000:8AE9
F000:8ACB 33 C9 xor cx,cx ; Zero register
F000:8ACD locloop_177: ; xref F000:8AD8
F000:8ACD FB sti ; Enable interrupts
F000:8ACE FC cld ; Clear direction
F000:8ACF FA cli ; Disable interrupts
F000:8AD0 FC cld ; Clear direction
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 44
F000:8AD1 EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:8AD2 A8 08 test al,8
F000:8AD4 75 0D jnz short loc_180 ; Jump if not zero
F000:8AD6 A8 01 test al,1
F000:8AD8 E0 F3 loopnz locloop_177 ; Loop if zf=0, cx>0
F000:8ADA 33 C9 xor cx,cx ; Zero register
F000:8ADC locloop_178: ; xref F000:8AE1
F000:8ADC EC in al,dx ; port 3DAh, CGA/EGA vid status
F000:8ADD EB 00 jmp short loc_179 ; (8ADF)
F000:8ADF loc_179: ; xref F000:8ADD
F000:8ADF A8 09 test al,9
F000:8AE1 E1 F9 loopz locloop_178 ; Loop if zf=1, cx>0
F000:8AE3 loc_180: ; xref F000:8AD4
F000:8AE3 8A C3 mov al,bl
F000:8AE5 AA stosb ; Store al to es:[di]
F000:8AE6 FB sti ; Enable interrupts
F000:8AE7 47 inc di
F000:8AE8 4E dec si
F000:8AE9 75 E0 jnz loc_176 ; Jump if not zero
F000:8AEB C3 retn
F000:8AEC loc_181: ; xref F000:8A85
F000:8AEC 55 push bp
F000:8AED 8B E9 mov bp,cx
F000:8AEF 50 push ax
F000:8AF0 25 007F and ax,7Fh
F000:8AF3 C1 E0 03 shl ax,3 ; Shift w/zeros fill
F000:8AF6 50 push ax
F000:8AF7 8B 16 0050 mov dx,vid_curs_pos0 ; (0040:0050=184Fh)
F000:8AFB 8A C6 mov al,dh
F000:8AFD F6 26 004A mul byte ptr video_columns ; (0040:004A=50h) ax = data * al
F000:8B01 C1 E0 02 shl ax,2 ; Shift w/zeros fill
F000:8B04 32 F6 xor dh,dh ; Zero register
F000:8B06 03 C2 add ax,dx
F000:8B08 8B F8 mov di,ax
F000:8B0A BE FA6E mov si,0FA6Eh
F000:8B0D 8A 36 0049 mov dh,video_mode ; (0040:0049=3)
F000:8B11 8A D3 mov dl,bl
F000:8B13 0E push cs
F000:8B14 1F pop ds
F000:8B15 58 pop ax
F000:8B16 5B pop bx
F000:8B17 22 DB and bl,bl
F000:8B19 79 08 jns short loc_182 ; Jump if not sign
F000:8B1B 33 F6 xor si,si ; Zero register
F000:8B1D 8E DE mov ds,si
F000:8B1F C5 36 007C lds si,dword ptr ds:graph_tbl_off ; (0000:007C=4CF0h) Load 32 bit ptr
F000:8B23 loc_182: ; xref F000:8B19
F000:8B23 03 F0 add si,ax
F000:8B25 80 FE 06 cmp dh,6
F000:8B28 74 43 je short loc_188 ; Jump if equal
F000:8B2A D1 E7 shl di,1 ; Shift w/zeros fill
F000:8B2C 8A C2 mov al,dl
F000:8B2E 24 03 and al,3
F000:8B30 32 F6 xor dh,dh ; Zero register
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 45
F000:8B32 loc_183: ; xref F000:8B37
F000:8B32 0A F0 or dh,al
F000:8B34 C0 E0 02 shl al,2 ; Shift w/zeros fill
F000:8B37 75 F9 jnz loc_183 ; Jump if not zero
F000:8B39 loc_184: ; xref F000:8B69
F000:8B39 B9 0004 mov cx,4
F000:8B3C locloop_185: ; xref F000:8B5F
F000:8B3C 8A 04 mov al,[si]
F000:8B3E 46 inc si
F000:8B3F E8 01F1 call sub_26 ; (8D33)
F000:8B42 79 03 jns short loc_186 ; Jump if not sign
F000:8B44 26: 33 05 xor ax,es:[di]
F000:8B47 loc_186: ; xref F000:8B42
F000:8B47 26: 89 05 mov es:[di],ax
F000:8B4A 8A 04 mov al,[si]
F000:8B4C 46 inc si
F000:8B4D E8 01E3 call sub_26 ; (8D33)
F000:8B50 79 05 jns short loc_187 ; Jump if not sign
F000:8B52 26: 33 85 2000 xor ax,es:data_28e[di] ; (B800:2000=720h)
F000:8B57 loc_187: ; xref F000:8B50
F000:8B57 26: 89 85 2000 mov es:data_28e[di],ax ; (B800:2000=720h)
F000:8B5C 83 C7 50 add di,50h
F000:8B5F E2 DB loop locloop_185 ; Loop if cx > 0
F000:8B61 81 EF 013E sub di,13Eh
F000:8B65 83 EE 08 sub si,8
F000:8B68 4D dec bp
F000:8B69 75 CE jnz loc_184 ; Jump if not zero
F000:8B6B 5D pop bp
F000:8B6C C3 retn
F000:8B6D loc_188: ; xref F000:8B28
F000:8B6D D0 E2 shl dl,1 ; Shift w/zeros fill
F000:8B6F 9F lahf ; Load ah from flags
F000:8B70 loc_189: ; xref F000:8B9C
F000:8B70 B9 0004 mov cx,4
F000:8B73 locloop_190: ; xref F000:8B92
F000:8B73 8A 04 mov al,[si]
F000:8B75 46 inc si
F000:8B76 9E sahf ; Store ah into flags
F000:8B77 73 03 jnc short loc_191 ; Jump if carry=0
F000:8B79 26: 32 05 xor al,es:[di]
F000:8B7C loc_191: ; xref F000:8B77
F000:8B7C 26: 88 05 mov es:[di],al
F000:8B7F 8A 04 mov al,[si]
F000:8B81 46 inc si
F000:8B82 9E sahf ; Store ah into flags
F000:8B83 73 05 jnc short loc_192 ; Jump if carry=0
F000:8B85 26: 32 85 2000 xor al,es:data_28e[di] ; (B800:2000=20h)
F000:8B8A loc_192: ; xref F000:8B83
F000:8B8A 26: 88 85 2000 mov es:data_28e[di],al ; (B800:2000=20h)
F000:8B8F 83 C7 50 add di,50h
F000:8B92 E2 DF loop locloop_190 ; Loop if cx > 0
F000:8B94 81 EF 013F sub di,13Fh
F000:8B98 83 EE 08 sub si,8
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 46
F000:8B9B 4D dec bp
F000:8B9C 75 D2 jnz loc_189 ; Jump if not zero
F000:8B9E 5D pop bp
F000:8B9F C3 retn
sub_13 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:852A, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_15 proc near
F000:8BA0 A0 0066 mov al,video_color ; (0040:0066=30h)
F000:8BA3 22 FF and bh,bh
F000:8BA5 74 0B jz short loc_193 ; Jump if zero
F000:8BA7 0C 20 or al,20h ; ' '
F000:8BA9 F6 C3 01 test bl,1
F000:8BAC 75 0B jnz short loc_194 ; Jump if not zero
F000:8BAE 24 DF and al,0DFh
F000:8BB0 EB 07 jmp short loc_194 ; (8BB9)
F000:8BB2 loc_193: ; xref F000:8BA5
F000:8BB2 24 E0 and al,0E0h
F000:8BB4 80 E3 1F and bl,1Fh
F000:8BB7 0A C3 or al,bl
F000:8BB9 loc_194: ; xref F000:8BAC, 8BB0
F000:8BB9 A2 0066 mov video_color,al ; (0040:0066=30h)
F000:8BBC 8B 16 0063 mov dx,@video_port ; (0040:0063=3D4h)
F000:8BC0 83 C2 05 add dx,5
F000:8BC3 EE out dx,al ; port 3D9h, CGA color control
F000:8BC4 C3 retn
sub_15 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:852C, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_16 proc near
F000:8BC5 8A D8 mov bl,al
F000:8BC7 E8 011A call sub_24 ; (8CE4)
F000:8BCA 8A E3 mov ah,bl
F000:8BCC 22 DD and bl,ch
F000:8BCE 22 E4 and ah,ah
F000:8BD0 79 04 jns short loc_195 ; Jump if not sign
F000:8BD2 32 C3 xor al,bl
F000:8BD4 EB 06 jmp short loc_196 ; (8BDC)
F000:8BD6 loc_195: ; xref F000:8BD0
F000:8BD6 F6 D5 not ch
F000:8BD8 22 C5 and al,ch
F000:8BDA 0A C3 or al,bl
F000:8BDC loc_196: ; xref F000:8BD4
F000:8BDC D2 C8 ror al,cl ; Rotate
F000:8BDE 26: 88 04 mov es:[si],al
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 47
F000:8BE1 C3 retn
sub_16 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:852E, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_17 proc near
F000:8BE2 E8 00FF call sub_24 ; (8CE4)
F000:8BE5 22 C5 and al,ch
F000:8BE7 8B EC mov bp,sp
F000:8BE9 88 46 14 mov [bp+14h],al
F000:8BEC C3 retn
sub_17 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8530, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_18 proc near
F000:8BED loc_197: ; xref F000:8583
F000:8BED 1E push ds
F000:8BEE 50 push ax
F000:8BEF 53 push bx
F000:8BF0 51 push cx
F000:8BF1 52 push dx
F000:8BF2 50 push ax
F000:8BF3 B8 0040 mov ax,seg_b
F000:8BF6 8E D8 mov ds,ax
F000:8BF8 B4 03 mov ah,3
F000:8BFA 8A 3E 0062 mov bh,video_page ; (0040:0062=0)
F000:8BFE CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:8C00 58 pop ax
F000:8C01 3C 0D cmp al,0Dh
F000:8C03 76 0F jbe short loc_201 ; Jump if below or =
F000:8C05 loc_198: ; xref F000:8C20
F000:8C05 B4 0A mov ah,0Ah
F000:8C07 E8 009B call sub_22 ; (8CA5)
F000:8C0A loc_199: ; xref F000:8C25, 8C30, 8C34
F000:8C0A B4 02 mov ah,2
F000:8C0C CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:8C0E loc_200: ; xref F000:8C2A
F000:8C0E 5A pop dx
F000:8C0F 59 pop cx
F000:8C10 5B pop bx
F000:8C11 58 pop ax
F000:8C12 1F pop ds
F000:8C13 CF iret ; Interrupt return
F000:8C14 loc_201: ; xref F000:8C03
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 48
F000:8C14 74 16 jz short loc_203 ; Jump if zero
F000:8C16 3C 08 cmp al,8
F000:8C18 74 14 je short loc_204 ; Jump if equal
F000:8C1A 3C 07 cmp al,7
F000:8C1C 74 09 je short loc_202 ; Jump if equal
F000:8C1E 3C 0A cmp al,0Ah
F000:8C20 75 E3 jne loc_198 ; Jump if not equal
F000:8C22 E8 008F call sub_23 ; (8CB4)
F000:8C25 EB E3 jmp short loc_199 ; (8C0A)
F000:8C27 loc_202: ; xref F000:8C1C
F000:8C27 E8 01B6 call sub_30 ; (8DE0)
F000:8C2A EB E2 jmp short loc_200 ; (8C0E)
F000:8C2C loc_203: ; xref F000:8C14
F000:8C2C 32 D2 xor dl,dl ; Zero register
F000:8C2E loc_204: ; xref F000:8C18
F000:8C2E 22 D2 and dl,dl
F000:8C30 74 D8 jz loc_199 ; Jump if zero
F000:8C32 FE CA dec dl
F000:8C34 EB D4 jmp short loc_199 ; (8C0A)
sub_18 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8532, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_19 proc near
F000:8C36 A0 0049 mov al,video_mode ; (0040:0049=3)
F000:8C39 8A 26 004A mov ah,byte ptr video_columns ; (0040:004A=50h)
F000:8C3D 8B EC mov bp,sp
F000:8C3F 89 46 14 mov [bp+14h],ax
F000:8C42 A0 0062 mov al,video_page ; (0040:0062=0)
F000:8C45 88 46 0F mov [bp+0Fh],al
F000:8C48 C3 retn
sub_19 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8534, 8536, 8538, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_20 proc near
F000:8C49 C3 retn
sub_20 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:853A, 857B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_21 proc near
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 49
F000:8C4A 3C 04 cmp al,4
F000:8C4C 73 56 jae short loc_ret_210 ; Jump if above or =
F000:8C4E E3 54 jcxz short loc_ret_210 ; Jump if cx=0
F000:8C50 98 cbw ; Convrt byte to word
F000:8C51 8B F8 mov di,ax
F000:8C53 8B F3 mov si,bx
F000:8C55 32 DB xor bl,bl ; Zero register
F000:8C57 86 DF xchg bl,bh
F000:8C59 87 DE xchg bx,si
F000:8C5B D1 E6 shl si,1 ; Shift w/zeros fill
F000:8C5D FF B4 0050 push word ptr [si+50h]
nop ;*Fixup for MASM (M)
F000:8C61 B4 02 mov ah,2
F000:8C63 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:8C65 locloop_205: ; xref F000:8C99
F000:8C65 26: 8A 46 00 mov al,es:[bp]
F000:8C69 45 inc bp
F000:8C6A 3C 08 cmp al,8
F000:8C6C 74 0C je short loc_206 ; Jump if equal
F000:8C6E 3C 0D cmp al,0Dh
F000:8C70 74 08 je short loc_206 ; Jump if equal
F000:8C72 3C 07 cmp al,7
F000:8C74 74 04 je short loc_206 ; Jump if equal
F000:8C76 3C 0A cmp al,0Ah
F000:8C78 75 0A jne short loc_207 ; Jump if not equal
F000:8C7A loc_206: ; xref F000:8C6C, 8C70, 8C74
F000:8C7A B4 0E mov ah,0Eh
F000:8C7C CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:8C7E 8B 94 0050 mov dx,[si+50h]
nop ;*Fixup for MASM (M)
F000:8C82 EB 11 jmp short loc_209 ; (8C95)
F000:8C84 loc_207: ; xref F000:8C78
F000:8C84 83 FF 01 cmp di,1
F000:8C87 76 05 jbe short loc_208 ; Jump if below or =
F000:8C89 26: 8A 5E 00 mov bl,es:[bp]
F000:8C8D 45 inc bp
F000:8C8E loc_208: ; xref F000:8C87
F000:8C8E B4 09 mov ah,9
F000:8C90 51 push cx
F000:8C91 E8 0011 call sub_22 ; (8CA5)
F000:8C94 59 pop cx
F000:8C95 loc_209: ; xref F000:8C82
F000:8C95 B4 02 mov ah,2
F000:8C97 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:8C99 E2 CA loop locloop_205 ; Loop if cx > 0
F000:8C9B 5A pop dx
F000:8C9C D1 EF shr di,1 ; Shift w/zeros fill
F000:8C9E 72 04 jc short loc_ret_210 ; Jump if carry Set
F000:8CA0 B4 02 mov ah,2
F000:8CA2 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 50
F000:8CA4 loc_ret_210: ; xref F000:8C4C, 8C4E, 8C9E
F000:8CA4 C3 retn
sub_21 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8C07, 8C91
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_22 proc near
F000:8CA5 B9 0001 mov cx,1
F000:8CA8 CD 10 int 10h ; Video display ah=functn 0Ah
; set char al at present curs
F000:8CAA FE C2 inc dl
F000:8CAC 3A 16 004A cmp dl,byte ptr video_columns ; (0040:004A=50h)
F000:8CB0 75 31 jne short loc_ret_213 ; Jump if not equal
F000:8CB2 32 D2 xor dl,dl ; Zero register
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:8C22
sub_23:
F000:8CB4 FE C6 inc dh
F000:8CB6 80 FE 19 cmp dh,19h
F000:8CB9 75 28 jne short loc_ret_213 ; Jump if not equal
F000:8CBB FE CE dec dh
F000:8CBD 80 3E 0049 07 cmp video_mode,7 ; (0040:0049=3)
F000:8CC2 74 09 je short loc_211 ; Jump if equal
F000:8CC4 80 3E 0049 04 cmp video_mode,4 ; (0040:0049=3)
F000:8CC9 B4 00 mov ah,0
F000:8CCB 73 04 jnc short loc_212 ; Jump if carry=0
F000:8CCD loc_211: ; xref F000:8CC2
F000:8CCD B4 08 mov ah,8
F000:8CCF CD 10 int 10h ; Video display ah=functn 08h
; get char al & attrib ah @curs
F000:8CD1 loc_212: ; xref F000:8CCB
F000:8CD1 53 push bx
F000:8CD2 52 push dx
F000:8CD3 33 C9 xor cx,cx ; Zero register
F000:8CD5 8A 16 004A mov dl,byte ptr video_columns ; (0040:004A=50h)
F000:8CD9 FE CA dec dl
F000:8CDB BB 0601 mov bx,601h
F000:8CDE 93 xchg ax,bx
F000:8CDF CD 10 int 10h ; Video display ah=functn 06h
; scroll up, al=lines
F000:8CE1 5A pop dx
F000:8CE2 5B pop bx
F000:8CE3 loc_ret_213: ; xref F000:8CB0, 8CB9
F000:8CE3 C3 retn
sub_22 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 51
; SUBROUTINE
;
; Called from: F000:8BC7, 8BE2
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_24 proc near
F000:8CE4 D1 CA ror dx,1 ; Rotate
F000:8CE6 B0 50 mov al,50h ; 'P'
F000:8CE8 F6 E2 mul dl ; ax = reg * al
F000:8CEA D0 E6 shl dh,1 ; Shift w/zeros fill
F000:8CEC 73 03 jnc short loc_214 ; Jump if carry=0
F000:8CEE 05 2000 add ax,2000h
F000:8CF1 loc_214: ; xref F000:8CEC
F000:8CF1 8B F0 mov si,ax
F000:8CF3 8B C1 mov ax,cx
F000:8CF5 B9 0103 mov cx,103h
F000:8CF8 B2 07 mov dl,7
F000:8CFA 22 D0 and dl,al
F000:8CFC 80 3E 0049 06 cmp video_mode,6 ; (0040:0049=3)
F000:8D01 73 0B jae short loc_215 ; Jump if above or =
F000:8D03 B9 0302 mov cx,302h
F000:8D06 B2 03 mov dl,3
F000:8D08 22 D0 and dl,al
F000:8D0A D0 E2 shl dl,1 ; Shift w/zeros fill
F000:8D0C FE C2 inc dl
F000:8D0E loc_215: ; xref F000:8D01
F000:8D0E FE C2 inc dl
F000:8D10 D3 E8 shr ax,cl ; Shift w/zeros fill
F000:8D12 03 F0 add si,ax
F000:8D14 8A CA mov cl,dl
F000:8D16 26: 8A 04 mov al,es:[si]
F000:8D19 D2 C0 rol al,cl ; Rotate
F000:8D1B C3 retn
sub_24 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:89A9, 89B1
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_25 proc near
F000:8D1C 8B D0 mov dx,ax
F000:8D1E D1 E0 shl ax,1 ; Shift w/zeros fill
F000:8D20 0B C2 or ax,dx
F000:8D22 86 C4 xchg al,ah
F000:8D24 B9 0008 mov cx,8
F000:8D27 locloop_216: ; xref F000:8D2D
F000:8D27 D1 E0 shl ax,1 ; Shift w/zeros fill
F000:8D29 D0 D2 rcl dl,1 ; Rotate thru carry
F000:8D2B D1 E0 shl ax,1 ; Shift w/zeros fill
F000:8D2D E2 F8 loop locloop_216 ; Loop if cx > 0
F000:8D2F 88 13 mov [bp+di],dl
F000:8D31 47 inc di
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 52
F000:8D32 C3 retn
sub_25 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8B3F, 8B4D
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_26 proc near
F000:8D33 B4 08 mov ah,8
F000:8D35 loc_217: ; xref F000:8D3D
F000:8D35 D0 E0 shl al,1 ; Shift w/zeros fill
F000:8D37 D1 D3 rcl bx,1 ; Rotate thru carry
F000:8D39 D1 E3 shl bx,1 ; Shift w/zeros fill
F000:8D3B FE CC dec ah
F000:8D3D 75 F6 jnz loc_217 ; Jump if not zero
F000:8D3F 8B C3 mov ax,bx
F000:8D41 D1 E8 shr ax,1 ; Shift w/zeros fill
F000:8D43 0B C3 or ax,bx
F000:8D45 22 C6 and al,dh
F000:8D47 22 E6 and ah,dh
F000:8D49 86 C4 xchg al,ah
F000:8D4B 22 D2 and dl,dl
F000:8D4D C3 retn
sub_26 endp
F000:8D4E 50 A0 10 00 24 30 db 50h, 0A0h, 10h, 0, 24h, 30h
F000:8D54 3C 30 58 C3 db 3Ch, 30h, 58h, 0C3h
F000:8D58 loc_218: ; xref F000:8119, 8186, 8D70, 8F89
; 9099
F000:8D58 8B D5 mov dx,bp
F000:8D5A loc_219: ; xref F000:8D66
F000:8D5A BC 8D5F mov sp,8D5Fh
F000:8D5D EB 13 jmp short loc_224 ; (8D72)
F000:8D5F locloop_220: ; xref F000:8D5F
F000:8D5F E2 FE loop locloop_220 ; Loop if cx > 0
F000:8D61 locloop_221: ; xref F000:8D61
F000:8D61 E2 FE loop locloop_221 ; Loop if cx > 0
F000:8D63 locloop_222: ; xref F000:8D63
F000:8D63 E2 FE loop locloop_222 ; Loop if cx > 0
F000:8D65 4A dec dx
F000:8D66 75 F2 jnz loc_219 ; Jump if not zero
F000:8D68 BA 0006 mov dx,6
F000:8D6B locloop_223: ; xref F000:8D6B, 8D6E
F000:8D6B E2 FE loop locloop_223 ; Loop if cx > 0
F000:8D6D 4A dec dx
F000:8D6E 75 FB jnz locloop_223 ; Jump if not zero
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 53
F000:8D70 EB E6 jmp short loc_218 ; (8D58)
F000:8D72 loc_224: ; xref F000:8D5D, 8DB3
F000:8D72 BB 0080 mov bx,80h
F000:8D75 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:8D77 24 FE and al,0FEh
F000:8D79 EB 00 jmp short loc_225 ; (8D7B)
F000:8D7B loc_225: ; xref F000:8D79
F000:8D7B EB 00 jmp short loc_226 ; (8D7D)
F000:8D7D loc_226: ; xref F000:8D7B, 8D90
F000:8D7D 0C 02 or al,2
F000:8D7F E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8D81 B9 00E0 mov cx,0E0h
F000:8D84 locloop_227: ; xref F000:8D84
F000:8D84 E2 FE loop locloop_227 ; Loop if cx > 0
F000:8D86 24 FD and al,0FDh
F000:8D88 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
; al = 0, disable parity
F000:8D8A B9 00D0 mov cx,0D0h
F000:8D8D locloop_228: ; xref F000:8D8D
F000:8D8D E2 FE loop locloop_228 ; Loop if cx > 0
F000:8D8F 4B dec bx
F000:8D90 75 EB jnz loc_226 ; Jump if not zero
F000:8D92 FF E4 jmp sp ;*Register jump
F000:8D94 loc_229: ; xref F000:8FC1, 932B, 9331, AA33
; AA60
F000:8D94 33 C0 xor ax,ax ; Zero register
F000:8D96 CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:8D98 loc_230: ; xref F000:E9D0, E9FD
F000:8D98 E8 001E call sub_27 ; (8DB9)
F000:8D9B BE D802 mov si,0D802h
F000:8D9E E8 0018 call sub_27 ; (8DB9)
F000:8DA1 E8 00CF call sub_36 ; (8E73)
F000:8DA4 A8 20 test al,20h ; ' '
F000:8DA6 75 08 jnz short loc_233 ; Jump if not zero
F000:8DA8 loc_231: ; xref F000:8DAE
F000:8DA8 FA cli ; Disable interrupts
F000:8DA9 E8 005B call sub_31 ; (8E07)
F000:8DAC locloop_232: ; xref F000:8DAC
F000:8DAC E2 FE loop locloop_232 ; Loop if cx > 0
F000:8DAE EB F8 jmp short loc_231 ; (8DA8)
F000:8DB0 loc_233: ; xref F000:8DA6
F000:8DB0 BC 8DB5 mov sp,8DB5h
F000:8DB3 EB BD jmp short loc_224 ; (8D72)
F000:8DB5 loc_234: ; xref F000:8DB7
F000:8DB5 FB sti ; Enable interrupts
F000:8DB6 F4 hlt ; Halt processor
F000:8DB7 EB FC jmp short loc_234 ; (8DB5)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 54
;
; Called from: F000:8D98, 8D9E, 900E, 9017, 943D, 9826, AD3E
; AD53, E9DD, E9E3
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_27 proc near
F000:8DB9 loc_235: ; xref F000:8DC4
F000:8DB9 FA cli ; Disable interrupts
F000:8DBA FC cld ; Clear direction
F000:8DBB 2E: AC lods byte ptr cs:[si] ; String [si] to al
F000:8DBD 22 C0 and al,al
F000:8DBF 74 05 jz short loc_ret_236 ; Jump if zero
F000:8DC1 E8 000E call sub_29 ; (8DD2)
F000:8DC4 EB F3 jmp short loc_235 ; (8DB9)
F000:8DC6 loc_ret_236: ; xref F000:8DBF
F000:8DC6 C3 retn
sub_27 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:900B, 9011, 901E, 9745, 9823
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_28 proc near
F000:8DC7 B0 0D mov al,0Dh
F000:8DC9 E8 0006 call sub_29 ; (8DD2)
F000:8DCC B0 0A mov al,0Ah
F000:8DCE E8 0001 call sub_29 ; (8DD2)
F000:8DD1 C3 retn
sub_28 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8DC1, 8DC9, 8DCE, ABED, AD11, AD31, E9ED
; E9F7, EA21
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_29 proc near
F000:8DD2 B4 0E mov ah,0Eh
F000:8DD4 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:8DD6 FA cli ; Disable interrupts
F000:8DD7 FC cld ; Clear direction
F000:8DD8 B0 8D mov al,8Dh
F000:8DDA E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
F000:8DDC E8 0064 call sub_33 ; (8E43)
F000:8DDF C3 retn
sub_29 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 55
;
; Called from: F000:8C27, 9345, 9348
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_30 proc near
F000:8DE0 B0 B6 mov al,0B6h
F000:8DE2 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:8DE4 EB 00 jmp short loc_237 ; (8DE6)
F000:8DE6 loc_237: ; xref F000:8DE4
F000:8DE6 EB 00 jmp short loc_238 ; (8DE8)
F000:8DE8 loc_238: ; xref F000:8DE6
F000:8DE8 B0 04 mov al,4
F000:8DEA E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:8DEC EB 00 jmp short loc_239 ; (8DEE)
F000:8DEE loc_239: ; xref F000:8DEC
F000:8DEE EB 00 jmp short loc_240 ; (8DF0)
F000:8DF0 loc_240: ; xref F000:8DEE
F000:8DF0 E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:8DF2 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:8DF4 50 push ax
F000:8DF5 EB 00 jmp short loc_241 ; (8DF7)
F000:8DF7 loc_241: ; xref F000:8DF5
F000:8DF7 EB 00 jmp short loc_242 ; (8DF9)
F000:8DF9 loc_242: ; xref F000:8DF7
F000:8DF9 0C 03 or al,3
F000:8DFB E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8DFD B9 8000 mov cx,8000h
F000:8E00 E8 6265 call sub_264 ; (F068)
F000:8E03 58 pop ax
F000:8E04 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8E06 C3 retn
sub_30 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8DA9, 9351, 971F, 9728, 97C2, 97D2, BCE6
; EC7A, ECC1
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_31 proc near
F000:8E07 B0 B6 mov al,0B6h
F000:8E09 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:8E0B EB 00 jmp short loc_243 ; (8E0D)
F000:8E0D loc_243: ; xref F000:8E0B
F000:8E0D EB 00 jmp short loc_244 ; (8E0F)
F000:8E0F loc_244: ; xref F000:8E0D
F000:8E0F B0 05 mov al,5
F000:8E11 E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:8E13 EB 00 jmp short loc_245 ; (8E15)
F000:8E15 loc_245: ; xref F000:8E13
F000:8E15 EB 00 jmp short loc_246 ; (8E17)
F000:8E17 loc_246: ; xref F000:8E15
F000:8E17 E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:8E19 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:8E1B 50 push ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 56
F000:8E1C EB 00 jmp short loc_247 ; (8E1E)
F000:8E1E loc_247: ; xref F000:8E1C
F000:8E1E EB 00 jmp short loc_248 ; (8E20)
F000:8E20 loc_248: ; xref F000:8E1E
F000:8E20 0C 03 or al,3
F000:8E22 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8E24 B9 3000 mov cx,3000h
F000:8E27 E8 623E call sub_264 ; (F068)
F000:8E2A 58 pop ax
F000:8E2B E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8E2D C3 retn
sub_31 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:91F8, 91FF, 9224, 922B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_32 proc near
F000:8E2E loc_249: ; xref F000:850B
F000:8E2E 33 C9 xor cx,cx ; Zero register
F000:8E30 locloop_250: ; xref F000:8E35
F000:8E30 EB 00 jmp short loc_251 ; (8E32)
F000:8E32 loc_251: ; xref F000:8E30
F000:8E32 EC in al,dx ; port 2, DMA-1 bas&add ch 1
F000:8E33 84 C4 test al,ah
F000:8E35 E1 F9 loopz locloop_250 ; Loop if zf=1, cx>0
F000:8E37 74 09 jz short loc_ret_254 ; Jump if zero
F000:8E39 33 C9 xor cx,cx ; Zero register
F000:8E3B locloop_252: ; xref F000:8E40
F000:8E3B EB 00 jmp short loc_253 ; (8E3D)
F000:8E3D loc_253: ; xref F000:8E3B
F000:8E3D EC in al,dx ; port 2, DMA-1 bas&add ch 1
F000:8E3E 84 C4 test al,ah
F000:8E40 E0 F9 loopnz locloop_252 ; Loop if zf=0, cx>0
F000:8E42 loc_ret_254: ; xref F000:8E37
F000:8E42 C3 retn
sub_32 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8DDC, 8F8C, 9032, 9184, 91AE, 94BE, 959C
; 95DA, 97E1, AA4A, AB5C, AC83, ACC3, CB48
; E9AB
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_33 proc near
F000:8E43 loc_255: ; xref F000:90B1
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 57
F000:8E43 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:8E45 0C 0C or al,0Ch
F000:8E47 EB 00 jmp short loc_256 ; (8E49)
F000:8E49 loc_256: ; xref F000:8E47
F000:8E49 EB 00 jmp short loc_257 ; (8E4B)
F000:8E4B loc_257: ; xref F000:8E49
F000:8E4B E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8E4D 24 F3 and al,0F3h
F000:8E4F EB 00 jmp short loc_258 ; (8E51)
F000:8E51 loc_258: ; xref F000:8E4F
F000:8E51 EB 00 jmp short loc_259 ; (8E53)
F000:8E53 loc_259: ; xref F000:8E51
F000:8E53 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:8E55 C3 retn
sub_33 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8E7F, 93EF
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_34 proc near
F000:8E56 E8 0065 call sub_40 ; (8EBE)
F000:8E59 75 07 jnz short loc_ret_260 ; Jump if not zero
F000:8E5B E8 0035 call sub_37 ; (8E93)
F000:8E5E 74 10 jz short loc_262 ; Jump if zero
F000:8E60 3A C4 cmp al,ah
F000:8E62 loc_ret_260: ; xref F000:8E59
F000:8E62 C3 retn
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:93AA
sub_35:
F000:8E63 E8 0067 call sub_41 ; (8ECD)
F000:8E66 75 07 jnz short loc_ret_261 ; Jump if not zero
F000:8E68 E8 0028 call sub_37 ; (8E93)
F000:8E6B 74 03 jz short loc_262 ; Jump if zero
F000:8E6D 3A C4 cmp al,ah
F000:8E6F loc_ret_261: ; xref F000:8E66
F000:8E6F C3 retn
F000:8E70 loc_262: ; xref F000:8E5E, 8E6B
F000:8E70 0B E4 or sp,sp ; Zero ?
F000:8E72 C3 retn
sub_34 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8DA1, 9147
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 58
sub_36 proc near
F000:8E73 E4 64 in al,64h ; port 64h, keyboard status
F000:8E75 A8 01 test al,1
F000:8E77 74 04 jz short loc_264 ; Jump if zero
F000:8E79 EB 00 jmp short loc_263 ; (8E7B)
F000:8E7B loc_263: ; xref F000:8E79
F000:8E7B E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:8E7D loc_264: ; xref F000:8E77
F000:8E7D B0 C0 mov al,0C0h
F000:8E7F E8 FFD4 call sub_34 ; (8E56)
F000:8E82 C3 retn
sub_36 endp
F000:8E83 E4 64 A8 01 74 04 db 0E4h, 64h, 0A8h, 1, 74h, 4
F000:8E89 EB 00 E4 60 B0 D0 db 0EBh, 0, 0E4h, 60h, 0B0h, 0D0h
F000:8E8F E8 C4 FF C3 db 0E8h, 0C4h, 0FFh, 0C3h
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8E5B, 8E68, 93B2
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_37 proc near
F000:8E93 E8 0003 call sub_38 ; (8E99)
F000:8E96 E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:8E98 C3 retn
sub_37 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8E93
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_38 proc near
F000:8E99 B9 003A mov cx,3Ah
F000:8E9C locloop_265: ; xref F000:8EA8
F000:8E9C 51 push cx
F000:8E9D 33 C9 xor cx,cx ; Zero register
F000:8E9F locloop_266: ; xref F000:8EA5
F000:8E9F EB 00 jmp short loc_267 ; (8EA1)
F000:8EA1 loc_267: ; xref F000:8E9F
F000:8EA1 E4 64 in al,64h ; port 64h, keyboard status
F000:8EA3 A8 01 test al,1
F000:8EA5 E1 F8 loopz locloop_266 ; Loop if zf=1, cx>0
F000:8EA7 59 pop cx
F000:8EA8 E1 F2 loopz locloop_265 ; Loop if zf=1, cx>0
F000:8EAA C3 retn
sub_38 endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 59
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8EDE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_39 proc near
F000:8EAB E8 0010 call sub_40 ; (8EBE)
F000:8EAE 75 05 jnz short loc_ret_268 ; Jump if not zero
F000:8EB0 8A C4 mov al,ah
F000:8EB2 E8 0018 call sub_41 ; (8ECD)
F000:8EB5 loc_ret_268: ; xref F000:8EAE
F000:8EB5 C3 retn
sub_39 endp
F000:8EB6 8A E0 B0 D1 E8 EE db 8Ah, 0E0h, 0B0h, 0D1h, 0E8h, 0EEh
F000:8EBC FF C3 db 0FFh, 0C3h
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8E56, 8EAB, AC64, ACC8
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_40 proc near
F000:8EBE 50 push ax
F000:8EBF E8 0020 call sub_43 ; (8EE2)
F000:8EC2 58 pop ax
F000:8EC3 75 07 jnz short loc_ret_269 ; Jump if not zero
F000:8EC5 E6 64 out 64h,al ; port 64h, kybd cntrlr functn
; al = 0C0h, read 8042 in port
F000:8EC7 50 push ax
F000:8EC8 E8 0017 call sub_43 ; (8EE2)
F000:8ECB 58 pop ax
F000:8ECC loc_ret_269: ; xref F000:8EC3
F000:8ECC C3 retn
sub_40 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8E63, 8EB2
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_41 proc near
F000:8ECD 50 push ax
F000:8ECE E8 0011 call sub_43 ; (8EE2)
F000:8ED1 58 pop ax
F000:8ED2 75 05 jnz short loc_ret_270 ; Jump if not zero
F000:8ED4 E6 60 out 60h,al ; port 60h, keybd data write
F000:8ED6 E8 0009 call sub_43 ; (8EE2)
F000:8ED9 loc_ret_270: ; xref F000:8ED2
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 60
F000:8ED9 C3 retn
sub_41 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:93C9, 940E, 9416
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_42 proc near
F000:8EDA 8A E0 mov ah,al
F000:8EDC B0 60 mov al,60h ; '`'
F000:8EDE E8 FFCA call sub_39 ; (8EAB)
F000:8EE1 C3 retn
sub_42 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8EBF, 8EC8, 8ECE, 8ED6, 8EF7, 8F00, 8F10
; AC67, ACCB, E151
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_43 proc near
F000:8EE2 loc_271: ; xref F000:81DF, 8209, 8241
F000:8EE2 33 C9 xor cx,cx ; Zero register
F000:8EE4 locloop_272: ; xref F000:8EEA
F000:8EE4 EB 00 jmp short loc_273 ; (8EE6)
F000:8EE6 loc_273: ; xref F000:8EE4
F000:8EE6 E4 64 in al,64h ; port 64h, keyboard status
F000:8EE8 A8 02 test al,2
F000:8EEA E0 F8 loopnz locloop_272 ; Loop if zf=0, cx>0
F000:8EEC 74 08 jz short loc_ret_276 ; Jump if zero
F000:8EEE locloop_274: ; xref F000:8EF4
F000:8EEE EB 00 jmp short loc_275 ; (8EF0)
F000:8EF0 loc_275: ; xref F000:8EEE
F000:8EF0 E4 64 in al,64h ; port 64h, keyboard status
F000:8EF2 A8 02 test al,2
F000:8EF4 E0 F8 loopnz locloop_274 ; Loop if zf=0, cx>0
F000:8EF6 loc_ret_276: ; xref F000:8EEC
F000:8EF6 C3 retn
sub_43 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:AB7A, CB9F
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 61
sub_44 proc near
F000:8EF7 E8 FFE8 call sub_43 ; (8EE2)
F000:8EFA 75 17 jnz short loc_ret_277 ; Jump if not zero
F000:8EFC B0 D1 mov al,0D1h
F000:8EFE E6 64 out 64h,al ; port 64h, kybd cntrlr functn
; al = 0D1h, wrt 8042 out port
F000:8F00 E8 FFDF call sub_43 ; (8EE2)
F000:8F03 75 0E jnz short loc_ret_277 ; Jump if not zero
F000:8F05 B0 B7 mov al,0B7h
F000:8F07 E8 5F7F call sub_255 ; (EE89)
F000:8F0A 24 0C and al,0Ch
F000:8F0C 0C D1 or al,0D1h
F000:8F0E E6 60 out 60h,al ; port 60h, keybd data write
F000:8F10 E8 FFCF call sub_43 ; (8EE2)
F000:8F13 loc_ret_277: ; xref F000:8EFA, 8F03
F000:8F13 C3 retn
sub_44 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:AB77, CBA2
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_45 proc near
F000:8F14 B0 00 mov al,0
F000:8F16 E6 92 out 92h,al ; port 92h, system cntrl bits
F000:8F18 3B E4 cmp sp,sp
F000:8F1A C3 retn
sub_45 endp
F000:8F1B 51 E8 C3 FF 75 17 db 51h, 0E8h, 0C3h, 0FFh, 75h, 17h
F000:8F21 B0 D1 E6 64 E8 BA db 0B0h, 0D1h, 0E6h, 64h, 0E8h, 0BAh
F000:8F27 FF 75 0E B0 B7 E8 db 0FFh, 75h, 0Eh, 0B0h, 0B7h, 0E8h
F000:8F2D 5A 5F 24 0C 0C D3 db 5Ah, 5Fh, 24h, 0Ch, 0Ch, 0D3h
F000:8F33 E6 60 E8 AA FF db 0E6h, 60h, 0E8h, 0AAh, 0FFh
F000:8F38 loc_278:
F000:8F38 59 pop cx
F000:8F39 C3 retn
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CAB4
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_46 proc near
F000:8F3A B0 02 mov al,2
F000:8F3C E6 92 out 92h,al ; port 92h, system cntrl bits
F000:8F3E 3B E4 cmp sp,sp
F000:8F40 C3 retn
sub_46 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 62
; SUBROUTINE
;
; Called from: F000:9198, 95CD, 97F5
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_47 proc near
F000:8F41 FA cli ; Disable interrupts
F000:8F42 FC cld ; Clear direction
F000:8F43 1E push ds
F000:8F44 8E DB mov ds,bx
F000:8F46 33 F6 xor si,si ; Zero register
F000:8F48 AD lodsw ; String [si] to ax
F000:8F49 35 AA55 xor ax,0AA55h
F000:8F4C 75 32 jnz short loc_281 ; Jump if not zero
F000:8F4E B9 0080 mov cx,80h
F000:8F51 81 FB E000 cmp bx,0E000h
F000:8F55 74 03 je short loc_279 ; Jump if equal
F000:8F57 AC lodsb ; String [si] to al
F000:8F58 8B C8 mov cx,ax
F000:8F5A loc_279: ; xref F000:8F55
F000:8F5A C1 E1 05 shl cx,5 ; Shift w/zeros fill
F000:8F5D 03 D9 add bx,cx
F000:8F5F C1 E1 04 shl cx,4 ; Shift w/zeros fill
F000:8F62 33 F6 xor si,si ; Zero register
F000:8F64 locloop_280: ; xref F000:8F67
F000:8F64 AC lodsb ; String [si] to al
F000:8F65 02 E0 add ah,al
F000:8F67 E2 FB loop locloop_280 ; Loop if cx > 0
F000:8F69 75 19 jnz short loc_282 ; Jump if not zero
F000:8F6B FB sti ; Enable interrupts
F000:8F6C 06 push es
F000:8F6D 53 push bx
F000:8F6E 55 push bp
F000:8F6F 0E push cs
F000:8F70 68 8F77 push 8F77h
F000:8F73 1E push ds
F000:8F74 6A 03 push 3
F000:8F76 CB retf ; Return far
F000:8F77 FA FC 5D 5B 07 1F db 0FAh, 0FCh, 5Dh, 5Bh, 7, 1Fh
F000:8F7D 3B E4 C3 db 3Bh, 0E4h, 0C3h
F000:8F80 loc_281: ; xref F000:8F4C
F000:8F80 81 C3 0080 add bx,80h
F000:8F84 loc_282: ; xref F000:8F69
F000:8F84 1F pop ds
F000:8F85 C3 retn
sub_47 endp
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:8F86 loc_283: ; xref F000:80FB, 8104
F000:8F86 BD 0007 mov bp,7
F000:8F89 E9 FDCC jmp loc_218 ; (8D58)
;───── Indexed Entry Point ────────────────────────────────────────────────
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 63
F000:8F8C loc_284: ; xref F000:80FB, 8108, 980A
F000:8F8C E8 FEB4 call sub_33 ; (8E43)
F000:8F8F B0 0D mov al,0Dh
F000:8F91 E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 0Dh, status register D
F000:8F93 CD 19 int 19h ; Bootstrap loader
F000:8F95 loc_285: ; xref F000:9009
F000:8F95 B0 AA mov al,0AAh
F000:8F97 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:8F99 loc_286: ; xref F000:8F9B
F000:8F99 FB sti ; Enable interrupts
F000:8F9A F4 hlt ; Halt processor
F000:8F9B EB FC jmp short loc_286 ; (8F99)
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:8F9D loc_287: ; xref F000:80FB, 810A
F000:8F9D E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:8F9F B0 20 mov al,20h ; ' '
F000:8FA1 E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:8FA3 FF 2E 0067 jmp dword ptr @gen_io_ptr ; (0040:0067=522h)
F000:8FA7 loc_288: ; xref F000:E005
F000:8FA7 FA cli ; Disable interrupts
F000:8FA8 8B EC mov bp,sp
F000:8FAA 8C C8 mov ax,cs
F000:8FAC 3B 46 02 cmp ax,[bp+2]
F000:8FAF 75 0D jne short loc_289 ; Jump if not equal
F000:8FB1 B8 9009 mov ax,9009h
F000:8FB4 3B 46 00 cmp ax,[bp]
F000:8FB7 75 05 jne short loc_289 ; Jump if not equal
F000:8FB9 83 C4 06 add sp,6
F000:8FBC EB 4D jmp short loc_292 ; (900B)
F000:8FBE loc_289: ; xref F000:8FAF, 8FB7
F000:8FBE BE 7D8E mov si,7D8Eh
F000:8FC1 E9 FDD0 jmp loc_229 ; (8D94)
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 19h ▒▒▒▒▒
;
; BOOTSTRAP LOADER
;
; Floppy drive a: attempts a read from the first sector of the disk.
; If read properly (i.e a boot disk is in drive a:), control is
; transferred to the loaded program. The boot sector at track 0,
; sector 1 is transfered to memory at 0:7C00h. dh = drive which
; was used (0=A:). Control is passed to 0:7C00h.
F000:8FC4 int_19h_bootup proc near ; xref F000:9021, E6F2
F000:8FC4 33 C0 xor ax,ax ; Zero register
F000:8FC6 8E C0 mov es,ax
F000:8FC8 B8 EFC7 mov ax,0EFC7h
F000:8FCB BF 0078 mov di,78h
F000:8FCE FA cli ; Disable interrupts
F000:8FCF FC cld ; Clear direction
F000:8FD0 AB stosw ; Store ax to es:[di]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 64
F000:8FD1 8C C8 mov ax,cs
F000:8FD3 AB stosw ; Store ax to es:[di]
F000:8FD4 BB 7C00 mov bx,7C00h
F000:8FD7 8B FB mov di,bx
F000:8FD9 B9 0100 mov cx,100h
F000:8FDC F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:8FDE FB sti ; Enable interrupts
F000:8FDF 33 D2 xor dx,dx ; Zero register
F000:8FE1 33 C0 xor ax,ax ; Zero register
F000:8FE3 CD 13 int 13h ; Disk dl=drive #: ah=func a0h
; reset disk, al=return status
F000:8FE5 E8 0061 call sub_48 ; (9049)
F000:8FE8 BE 7D9B mov si,7D9Bh
F000:8FEB E3 08 jcxz short loc_290 ; Jump if cx=0
F000:8FED BE 7DB3 mov si,7DB3h
F000:8FF0 73 31 jnc short loc_293 ; Jump if carry=0
F000:8FF2 BE 7DCB mov si,7DCBh
F000:8FF5 loc_290: ; xref F000:8FEB
F000:8FF5 B0 0E mov al,0Eh
F000:8FF7 E8 5EA5 call sub_257 ; (EE9F)
F000:8FFA A8 08 test al,8
F000:8FFC 75 09 jnz short loc_291 ; Jump if not zero
F000:8FFE B2 80 mov dl,80h
F000:9000 E8 0046 call sub_48 ; (9049)
F000:9003 E3 02 jcxz short loc_291 ; Jump if cx=0
F000:9005 73 37 jnc short loc_295 ; Jump if carry=0
F000:9007 loc_291: ; xref F000:8FFC, 9003, 9030, 9047
F000:9007 CD 18 int 18h ; ROM basic
F000:9009 EB 8A jmp short loc_285 ; (8F95)
F000:900B loc_292: ; xref F000:8FBC
F000:900B E8 FDB9 call sub_28 ; (8DC7)
F000:900E E8 FDA8 call sub_27 ; (8DB9)
F000:9011 E8 FDB3 call sub_28 ; (8DC7)
F000:9014 BE 7DE3 mov si,7DE3h
F000:9017 E8 FD9F call sub_27 ; (8DB9)
F000:901A B4 00 mov ah,0
F000:901C CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:901E E8 FDA6 call sub_28 ; (8DC7)
F000:9021 EB A1 jmp short int_19h_bootup ; (8FC4)
F000:9023 loc_293: ; xref F000:8FF0
F000:9023 8B FB mov di,bx
F000:9025 26: 8B 05 mov ax,es:[di]
F000:9028 B9 0080 mov cx,80h
F000:902B FA cli ; Disable interrupts
F000:902C FC cld ; Clear direction
F000:902D F3/ AE repe scasb ; Rep zf=1+cx >0 Scan es:[di] for al
F000:902F FB sti ; Enable interrupts
F000:9030 E3 D5 jcxz loc_291 ; Jump if cx=0
F000:9032 loc_294: ; xref F000:9045
F000:9032 E8 FE0E call sub_33 ; (8E43)
F000:9035 B0 0D mov al,0Dh
F000:9037 E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 0Dh, status register D
F000:9039 EA 00007C00 ;* jmp far ptr loc_1 ;*(0000:7C00)
F000:9039 EA 00 7C 00 00 db 0EAh, 0, 7Ch, 0, 0
F000:903E loc_295: ; xref F000:9005
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 65
F000:903E 26: 81 BF 01FE AA55 cmp word ptr es:data_8e[bx],0AA55h ; (0000:01FE=0)
F000:9045 74 EB je loc_294 ; Jump if equal
F000:9047 EB BE jmp short loc_291 ; (9007)
int_19h_bootup endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8FE5, 9000
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_48 proc near
F000:9049 B9 0004 mov cx,4
F000:904C locloop_296: ; xref F000:9062
F000:904C 51 push cx
F000:904D B9 0001 mov cx,1
F000:9050 B8 0201 mov ax,201h
F000:9053 CD 13 int 13h ; Disk dl=drive #: ah=func a2h
; read sectors to memory es:bx
F000:9055 59 pop cx
F000:9056 73 0C jnc short loc_ret_297 ; Jump if carry=0
F000:9058 50 push ax
F000:9059 33 C0 xor ax,ax ; Zero register
F000:905B CD 13 int 13h ; Disk dl=drive #: ah=func a0h
; reset disk, al=return status
F000:905D 58 pop ax
F000:905E D0 E4 shl ah,1 ; Shift w/zeros fill
F000:9060 72 02 jc short loc_ret_297 ; Jump if carry Set
F000:9062 E2 E8 loop locloop_296 ; Loop if cx > 0
F000:9064 loc_ret_297: ; xref F000:9056, 9060
F000:9064 C3 retn
sub_48 endp
F000:9065 00 B0 10 E6 80 BC db 0, 0B0h, 10h, 0E6h, 80h, 0BCh
F000:906B 70 90 E9 D3 FD 72 db 70h, 90h, 0E9h, 0D3h, 0FDh, 72h
F000:9071 90 33 FF BE 01 00 db 90h, 33h, 0FFh, 0BEh, 1, 0
F000:9077 loc_298: ; xref F000:90A8
F000:9077 B0 FF mov al,0FFh
F000:9079 8B DF mov bx,di
F000:907B 89 05 mov [di],ax
F000:907D 89 45 02 mov [di+2],ax
F000:9080 loc_299: ; xref F000:908A
F000:9080 32 05 xor al,[di]
F000:9082 75 12 jnz short loc_300 ; Jump if not zero
F000:9084 0B FF or di,di ; Zero ?
F000:9086 74 14 jz short loc_301 ; Jump if zero
F000:9088 D1 EF shr di,1 ; Shift w/zeros fill
F000:908A EB F4 jmp short loc_299 ; (9080)
F000:908C BC 92 90 E9 05 1D db 0BCh, 92h, 90h, 0E9h, 5, 1Dh
F000:9092 94 90 db 94h, 90h
F000:9094 74 50 db 74h, 50h
F000:9096 loc_300: ; xref F000:9082, 90A0
F000:9096 BD 0003 mov bp,3
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 66
F000:9099 E9 FCBC jmp loc_218 ; (8D58)
F000:909C loc_301: ; xref F000:9086
F000:909C 88 07 mov [bx],al
F000:909E 32 07 xor al,[bx]
F000:90A0 75 F4 jnz loc_300 ; Jump if not zero
F000:90A2 8B FE mov di,si
F000:90A4 D1 E6 shl si,1 ; Shift w/zeros fill
F000:90A6 0B FF or di,di ; Zero ?
F000:90A8 75 CD jnz loc_298 ; Jump if not zero
F000:90AA B0 11 mov al,11h
F000:90AC E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:90AE BC 90B4 mov sp,90B4h
F000:90B1 E9 FD8F jmp loc_255 ; (8E43)
F000:90B4 B6 90 0B ED 78 D2 db 0B6h, 90h, 0Bh, 0EDh, 78h, 0D2h
F000:90BA BC C0 90 E9 E1 1C db 0BCh, 0C0h, 90h, 0E9h, 0E1h, 1Ch
F000:90C0 C2 90 75 D2 49 4F db 0C2h, 90h, 75h, 0D2h, 49h, 4Fh
F000:90C6 BC CC 90 E9 77 1B db 0BCh, 0CCh, 90h, 0E9h, 77h, 1Bh
F000:90CC CE 90 88 05 E2 F4 db 0CEh, 90h, 88h, 5, 0E2h, 0F4h
F000:90D2 49 90 BC DA 90 E9 db 49h, 90h, 0BCh, 0DAh, 90h, 0E9h
F000:90D8 69 1B DC 90 30 05 db 69h, 1Bh, 0DCh, 90h, 30h, 5
F000:90DE E1 F3 75 B4 30 24 db 0E1h, 0F3h, 75h, 0B4h, 30h, 24h
F000:90E4 75 B0 E4 61 A8 80 db 75h, 0B0h, 0E4h, 61h, 0A8h, 80h
F000:90EA B0 12 E6 80 33 C0 db 0B0h, 12h, 0E6h, 80h, 33h, 0C0h
F000:90F0 8E C0 B0 40 8E D8 db 8Eh, 0C0h, 0B0h, 40h, 8Eh, 0D8h
F000:90F6 B0 30 8E D0 BC 00 db 0B0h, 30h, 8Eh, 0D0h, 0BCh, 0
F000:90FC 01 B9 78 00 B8 7D db 1, 0B9h, 78h, 0, 0B8h, 7Dh
F000:9102 EA 8C CB 33 FF db 0EAh, 8Ch, 0CBh, 33h, 0FFh
F000:9107 locloop_302: ; xref F000:910B
F000:9107 AB stosw ; Store ax to es:[di]
F000:9108 93 xchg ax,bx
F000:9109 AB stosw ; Store ax to es:[di]
F000:910A 93 xchg ax,bx
F000:910B E2 FA loop locloop_302 ; Loop if cx > 0
F000:910D 26: C7 06 007E 0000 mov word ptr es:graph_tbl_seg,0 ; (0000:007E=0C80Eh)
F000:9114 BF 0180 mov di,180h
F000:9117 B9 000E mov cx,0Eh
F000:911A 33 C0 xor ax,ax ; Zero register
F000:911C F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:911E 33 FF xor di,di ; Zero register
F000:9120 BE FEE3 mov si,0FEE3h
F000:9123 B9 0020 mov cx,20h
F000:9126 locloop_303: ; xref F000:912A
F000:9126 2E: A5 movs word ptr es:[di],word ptr cs:[si] ; Mov [si] to es:[di]
F000:9128 47 inc di
F000:9129 47 inc di
F000:912A E2 FA loop locloop_303 ; Loop if cx > 0
F000:912C BF 01C0 mov di,1C0h
F000:912F B9 0008 mov cx,8
F000:9132 locloop_304: ; xref F000:9136
F000:9132 2E: A5 movs word ptr es:[di],word ptr cs:[si] ; Mov [si] to es:[di]
F000:9134 47 inc di
F000:9135 47 inc di
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 67
F000:9136 E2 FA loop locloop_304 ; Loop if cx > 0
F000:9138 2E: F6 06 E2C0 40 test byte ptr cs:data_158,40h ; (F000:E2C0=0BFh) '@'
F000:913E 74 07 jz short loc_305 ; Jump if zero
F000:9140 BF 01D0 mov di,1D0h
F000:9143 B8 7976 mov ax,7976h
F000:9146 AB stosw ; Store ax to es:[di]
F000:9147 loc_305: ; xref F000:913E
F000:9147 E8 FD29 call sub_36 ; (8E73)
F000:914A A2 0012 mov init_test_flag,al ; (0040:0012=0BFh)
F000:914D A8 20 test al,20h ; ' '
F000:914F 75 0E jnz short loc_306 ; Jump if not zero
F000:9151 BF 0020 mov di,20h
F000:9154 B8 FEB4 mov ax,0FEB4h
F000:9157 AB stosw ; Store ax to es:[di]
F000:9158 8C C8 mov ax,cs
F000:915A AB stosw ; Store ax to es:[di]
F000:915B B0 FE mov al,0FEh
F000:915D E6 21 out 21h,al ; port 21h, 8259-1 int comands
; al = 0FEh, IRQ0 (timer) only
F000:915F loc_306: ; xref F000:914F
F000:915F B0 15 mov al,15h
F000:9161 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9163 C6 06 0084 18 mov video_rows,18h ; (0040:0084=18h)
F000:9168 80 0E 0010 31 or byte ptr equip_bits,31h ; (0040:0010=61h) '1'
F000:916D B8 0007 mov ax,7
F000:9170 CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:9172 B0 17 mov al,17h
F000:9174 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9176 80 26 0010 CF and byte ptr equip_bits,0CFh ; (0040:0010=61h)
F000:917B B8 0001 mov ax,1
F000:917E CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:9180 B0 18 mov al,18h
F000:9182 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9184 E8 FCBC call sub_33 ; (8E43)
F000:9187 B0 19 mov al,19h
F000:9189 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:918B BB C000 mov bx,0C000h
F000:918E 0B ED or bp,bp ; Zero ?
F000:9190 79 06 jns short loc_307 ; Jump if not sign
F000:9192 C7 06 0072 1234 mov warm_boot_flag,1234h ; (0040:0072=1200h)
F000:9198 loc_307: ; xref F000:9190, 919F
F000:9198 E8 FDA6 call sub_47 ; (8F41)
F000:919B 81 FB C800 cmp bx,0C800h
F000:919F 72 F7 jb loc_307 ; Jump if below
F000:91A1 FA cli ; Disable interrupts
F000:91A2 FC cld ; Clear direction
F000:91A3 B0 1A mov al,1Ah
F000:91A5 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:91A7 E8 3BF9 call sub_209 ; (CDA3)
F000:91AA B0 8D mov al,8Dh
F000:91AC E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
F000:91AE E8 FC92 call sub_33 ; (8E43)
F000:91B1 BB 0042 mov bx,42h
F000:91B4 8C C9 mov cx,cs
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 68
F000:91B6 26: 39 0F cmp es:[bx],cx
F000:91B9 74 1D je short loc_309 ; Jump if equal
F000:91BB B0 94 mov al,94h
F000:91BD E8 5CDF call sub_257 ; (EE9F)
F000:91C0 A8 30 test al,30h ; '0'
F000:91C2 74 11 jz short loc_308 ; Jump if zero
F000:91C4 81 CD 0400 or bp,400h
F000:91C8 B8 8E8E mov ax,8E8Eh
F000:91CB E8 5CD1 call sub_257 ; (EE9F)
F000:91CE 0C 20 or al,20h ; ' '
F000:91D0 86 C4 xchg al,ah
F000:91D2 E8 5CD9 call sub_258 ; (EEAE)
F000:91D5 loc_308: ; xref F000:91C2
F000:91D5 E9 0103 jmp loc_321 ; (92DB)
F000:91D8 loc_309: ; xref F000:91B9
F000:91D8 A0 0012 mov al,ds:data_31e ; (C000:0012=45h)
F000:91DB 24 40 and al,40h ; '@'
F000:91DD BB B800 mov bx,0B800h
F000:91E0 74 04 jz short loc_310 ; Jump if zero
F000:91E2 B0 30 mov al,30h ; '0'
F000:91E4 B7 B0 mov bh,0B0h
F000:91E6 loc_310: ; xref F000:91E0
F000:91E6 08 06 0010 or ds:data_29e,al ; (C000:0010=20h)
F000:91EA E8 0171 call sub_51 ; (935E)
F000:91ED 75 17 jnz short loc_311 ; Jump if not zero
F000:91EF B0 1B mov al,1Bh
F000:91F1 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:91F3 B4 08 mov ah,8
F000:91F5 80 C2 02 add dl,2
F000:91F8 E8 FC33 call sub_32 ; (8E2E)
F000:91FB E3 09 jcxz short loc_311 ; Jump if cx=0
F000:91FD B4 01 mov ah,1
F000:91FF E8 FC2C call sub_32 ; (8E2E)
F000:9202 E3 02 jcxz short loc_311 ; Jump if cx=0
F000:9204 EB 4E jmp short loc_314 ; (9254)
F000:9206 loc_311: ; xref F000:91ED, 91FB, 9202
F000:9206 80 36 0010 30 xor byte ptr ds:data_29e,30h ; (C000:0010=20h) '0'
F000:920B A0 0010 mov al,ds:data_29e ; (C000:0010=20h)
F000:920E 24 30 and al,30h ; '0'
F000:9210 B7 B8 mov bh,0B8h
F000:9212 74 02 jz short loc_312 ; Jump if zero
F000:9214 B7 B0 mov bh,0B0h
F000:9216 loc_312: ; xref F000:9212
F000:9216 E8 0145 call sub_51 ; (935E)
F000:9219 75 17 jnz short loc_313 ; Jump if not zero
F000:921B B0 1C mov al,1Ch
F000:921D E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:921F B4 08 mov ah,8
F000:9221 80 C2 02 add dl,2
F000:9224 E8 FC07 call sub_32 ; (8E2E)
F000:9227 E3 09 jcxz short loc_313 ; Jump if cx=0
F000:9229 B4 01 mov ah,1
F000:922B E8 FC00 call sub_32 ; (8E2E)
F000:922E E3 02 jcxz short loc_313 ; Jump if cx=0
F000:9230 EB 22 jmp short loc_314 ; (9254)
F000:9232 loc_313: ; xref F000:9219, 9227, 922E
F000:9232 80 0E 0010 30 or byte ptr ds:data_29e,30h ; (C000:0010=20h) '0'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 69
F000:9237 A0 0012 mov al,ds:data_31e ; (C000:0012=45h)
F000:923A A8 20 test al,20h ; ' '
F000:923C 74 16 jz short loc_314 ; Jump if zero
F000:923E BB 0008 mov bx,8
F000:9241 B8 02B7 mov ax,2B7h
F000:9244 E8 00ED call sub_49 ; (9334)
F000:9247 74 0B jz short loc_314 ; Jump if zero
F000:9249 2E: F6 06 E2C0 08 test byte ptr cs:data_158,8 ; (F000:E2C0=0BFh)
F000:924F 74 03 jz short loc_314 ; Jump if zero
F000:9251 E8 00F1 call sub_50 ; (9345)
F000:9254 loc_314: ; xref F000:9204, 9230, 923C, 9247
; 924F
F000:9254 B0 1D mov al,1Dh
F000:9256 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9258 B8 8E8E mov ax,8E8Eh
F000:925B E8 5C41 call sub_257 ; (EE9F)
F000:925E 50 push ax
F000:925F 8A 26 0012 mov ah,ds:data_31e ; (C000:0012=45h)
F000:9263 A0 0010 mov al,ds:data_29e ; (C000:0010=20h)
F000:9266 24 30 and al,30h ; '0'
F000:9268 3C 30 cmp al,30h ; '0'
F000:926A 8A C8 mov cl,al
F000:926C C0 C4 02 rol ah,2 ; Rotate
F000:926F 74 01 jz short loc_315 ; Jump if zero
F000:9271 F5 cmc ; Complement carry
F000:9272 loc_315: ; xref F000:926F
F000:9272 72 04 jc short loc_316 ; Jump if carry Set
F000:9274 81 CD 0800 or bp,800h
F000:9278 loc_316: ; xref F000:9272
F000:9278 B0 94 mov al,94h
F000:927A E8 5C22 call sub_257 ; (EE9F)
F000:927D 24 30 and al,30h ; '0'
F000:927F 74 10 jz short loc_318 ; Jump if zero
F000:9281 3C 30 cmp al,30h ; '0'
F000:9283 74 07 je short loc_317 ; Jump if equal
F000:9285 80 F9 30 cmp cl,30h ; '0'
F000:9288 75 0F jne short loc_319 ; Jump if not equal
F000:928A EB 05 jmp short loc_318 ; (9291)
F000:928C loc_317: ; xref F000:9283
F000:928C 80 F9 30 cmp cl,30h ; '0'
F000:928F 74 08 je short loc_319 ; Jump if equal
F000:9291 loc_318: ; xref F000:927F, 928A
F000:9291 81 CD 0400 or bp,400h
F000:9295 58 pop ax
F000:9296 0C 20 or al,20h ; ' '
F000:9298 50 push ax
F000:9299 loc_319: ; xref F000:9288, 928F
F000:9299 58 pop ax
F000:929A 86 C4 xchg al,ah
F000:929C E8 5C0F call sub_258 ; (EEAE)
F000:929F B0 1E mov al,1Eh
F000:92A1 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:92A3 A0 0010 mov al,ds:data_29e ; (C000:0010=20h)
F000:92A6 24 30 and al,30h ; '0'
F000:92A8 3C 30 cmp al,30h ; '0'
F000:92AA B4 07 mov ah,7
F000:92AC 74 1A jz short loc_320 ; Jump if zero
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 70
F000:92AE B0 8E mov al,8Eh
F000:92B0 E8 5BEC call sub_257 ; (EE9F)
F000:92B3 A8 E0 test al,0E0h
F000:92B5 B8 0320 mov ax,320h
F000:92B8 75 0E jnz short loc_320 ; Jump if not zero
F000:92BA B0 94 mov al,94h
F000:92BC E8 5BE0 call sub_257 ; (EE9F)
F000:92BF 24 30 and al,30h ; '0'
F000:92C1 3C 20 cmp al,20h ; ' '
F000:92C3 74 03 je short loc_320 ; Jump if equal
F000:92C5 B8 0110 mov ax,110h
F000:92C8 loc_320: ; xref F000:92AC, 92B8, 92C3
F000:92C8 80 26 0010 CF and byte ptr ds:data_29e,0CFh ; (C000:0010=20h)
F000:92CD 08 06 0010 or ds:data_29e,al ; (C000:0010=20h)
F000:92D1 32 C0 xor al,al ; Zero register
F000:92D3 86 C4 xchg al,ah
F000:92D5 CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:92D7 B0 1F mov al,1Fh
F000:92D9 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:92DB loc_321: ; xref F000:91D5
F000:92DB B0 20 mov al,20h ; ' '
F000:92DD E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:92DF E8 34BE call sub_196 ; (C7A0)
F000:92E2 75 4A jnz short loc_323 ; Jump if not zero
F000:92E4 E8 E3D4 call $-1C29h
F000:92E7 F7 C5 4000 test bp,4000h
F000:92EB 75 3B jnz short loc_322 ; Jump if not zero
F000:92ED B4 03 mov ah,3
F000:92EF 32 FF xor bh,bh ; Zero register
F000:92F1 E8 E301 call $-1CFCh
F000:92F4 B0 21 mov al,21h ; '!'
F000:92F6 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:92F8 FE C6 inc dh
F000:92FA B2 00 mov dl,0
F000:92FC B4 02 mov ah,2
F000:92FE E8 E2F4 call $-1D09h
F000:9301 B0 22 mov al,22h ; '"'
F000:9303 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9305 E8 5D3A call sub_263 ; (F042)
F000:9308 B0 23 mov al,23h ; '#'
F000:930A E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:930C B4 03 mov ah,3
F000:930E E8 E2E4 call $-1D19h
F000:9311 B0 24 mov al,24h ; '$'
F000:9313 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9315 80 C6 02 add dh,2
F000:9318 B2 00 mov dl,0
F000:931A 89 16 0069 mov ds:data_43e,dx ; (C000:0069=4E45h)
F000:931E E8 E3AF call $-1C4Eh
F000:9321 B0 25 mov al,25h ; '%'
F000:9323 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9325 E9 16C8 jmp loc_642 ; (A9F0)
F000:9328 loc_322: ; xref F000:92EB
F000:9328 BE 7D0F mov si,7D0Fh
F000:932B E9 FA66 jmp loc_229 ; (8D94)
F000:932E loc_323: ; xref F000:92E2
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 71
F000:932E BE D7D6 mov si,0D7D6h
F000:9331 E9 FA60 jmp loc_229 ; (8D94)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9244, 93DF, 946D, 9709
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_49 proc near
F000:9334 50 push ax
F000:9335 B0 8E mov al,8Eh
F000:9337 E8 5B65 call sub_257 ; (EE9F)
F000:933A A8 C0 test al,0C0h
F000:933C 58 pop ax
F000:933D 75 05 jnz short loc_ret_324 ; Jump if not zero
F000:933F E8 5B5D call sub_257 ; (EE9F)
F000:9342 84 C4 test al,ah
F000:9344 loc_ret_324: ; xref F000:933D
F000:9344 C3 retn
sub_49 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9251, ACEA
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_50 proc near
F000:9345 E8 FA98 call sub_30 ; (8DE0)
F000:9348 E8 FA95 call sub_30 ; (8DE0)
F000:934B B9 FFF0 mov cx,0FFF0h
F000:934E E8 5D17 call sub_264 ; (F068)
F000:9351 loc_325: ; xref F000:935B
F000:9351 E8 FAB3 call sub_31 ; (8E07)
F000:9354 B9 8000 mov cx,8000h
F000:9357 E8 5D0E call sub_264 ; (F068)
F000:935A 4B dec bx
F000:935B 75 F4 jnz loc_325 ; Jump if not zero
F000:935D C3 retn
sub_50 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:91EA, 9216
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_51 proc near
F000:935E 33 C0 xor ax,ax ; Zero register
F000:9360 CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:9362 8B 16 0063 mov dx,ds:data_40e ; (C000:0063=2030h)
F000:9366 80 C2 04 add dl,4
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 72
F000:9369 A0 0065 mov al,ds:data_41e ; (C000:0065=54h)
F000:936C 24 37 and al,37h ; '7'
F000:936E EE out dx,al ; port 2034h
F000:936F 06 push es
F000:9370 51 push cx
F000:9371 8E C3 mov es,bx
F000:9373 B7 08 mov bh,8
F000:9375 E8 1A2C call sub_133 ; (ADA4)
F000:9378 9F lahf ; Load ah from flags
F000:9379 50 push ax
F000:937A 33 C0 xor ax,ax ; Zero register
F000:937C CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:937E 33 FF xor di,di ; Zero register
F000:9380 B9 0028 mov cx,28h
F000:9383 B8 7020 mov ax,7020h
F000:9386 F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:9388 58 pop ax
F000:9389 9E sahf ; Store ah into flags
F000:938A 59 pop cx
F000:938B 07 pop es
F000:938C C3 retn
sub_51 endp
F000:938D 00 db 0
F000:938E loc_326: ; xref F000:CD30
F000:938E B0 70 mov al,70h ; 'p'
F000:9390 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9392 55 push bp
F000:9393 33 ED xor bp,bp ; Zero register
F000:9395 33 C9 xor cx,cx ; Zero register
F000:9397 locloop_327: ; xref F000:93A1
F000:9397 EB 00 jmp short loc_328 ; (9399)
F000:9399 loc_328: ; xref F000:9397
F000:9399 E4 64 in al,64h ; port 64h, keyboard status
F000:939B A8 01 test al,1
F000:939D 74 02 jz short loc_329 ; Jump if zero
F000:939F E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:93A1 loc_329: ; xref F000:939D
F000:93A1 E2 F4 loop locloop_327 ; Loop if cx > 0
F000:93A3 B9 0003 mov cx,3
F000:93A6 locloop_330: ; xref F000:93AE
F000:93A6 51 push cx
F000:93A7 B8 FAFF mov ax,0FAFFh
F000:93AA E8 FAB6 call sub_35 ; (8E63)
F000:93AD 59 pop cx
F000:93AE E0 F6 loopnz locloop_330 ; Loop if zf=0, cx>0
F000:93B0 75 2A jnz short loc_335 ; Jump if not zero
F000:93B2 E8 FADE call sub_37 ; (8E93)
F000:93B5 3C AA cmp al,0AAh
F000:93B7 75 23 jne short loc_335 ; Jump if not equal
F000:93B9 B0 71 mov al,71h ; 'q'
F000:93BB E6 80 out 80h,al ; port 80h, diagnostc chkpoint
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 73
F000:93BD 2E: F6 06 E2C0 40 test byte ptr cs:data_158,40h ; (F000:E2C0=0BFh) '@'
F000:93C3 B0 4D mov al,4Dh ; 'M'
F000:93C5 74 02 jz short loc_331 ; Jump if zero
F000:93C7 B0 6C mov al,6Ch ; 'l'
F000:93C9 loc_331: ; xref F000:93C5
F000:93C9 E8 FB0E call sub_42 ; (8EDA)
F000:93CC 33 C9 xor cx,cx ; Zero register
F000:93CE locloop_332: ; xref F000:93D4
F000:93CE EB 00 jmp short loc_333 ; (93D0)
F000:93D0 loc_333: ; xref F000:93CE
F000:93D0 E4 64 in al,64h ; port 64h, keyboard status
F000:93D2 A8 01 test al,1
F000:93D4 E1 F8 loopz locloop_332 ; Loop if zf=1, cx>0
F000:93D6 74 26 jz short loc_337 ; Jump if zero
F000:93D8 EB 00 jmp short loc_334 ; (93DA)
F000:93DA loc_334: ; xref F000:93D8
F000:93DA E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:93DC loc_335: ; xref F000:93B0, 93B7
F000:93DC B8 01B7 mov ax,1B7h
F000:93DF E8 FF52 call sub_49 ; (9334)
F000:93E2 74 1A jz short loc_337 ; Jump if zero
F000:93E4 2E: F6 06 E2C0 03 test byte ptr cs:data_158,3 ; (F000:E2C0=0BFh)
F000:93EA 74 12 jz short loc_337 ; Jump if zero
F000:93EC B8 00AB mov ax,0ABh
F000:93EF E8 FA64 call sub_34 ; (8E56)
F000:93F2 75 06 jnz short loc_336 ; Jump if not zero
F000:93F4 81 CD 0200 or bp,200h
F000:93F8 EB 04 jmp short loc_337 ; (93FE)
F000:93FA loc_336: ; xref F000:93F2
F000:93FA 81 CD 0400 or bp,400h
F000:93FE loc_337: ; xref F000:93D6, 93E2, 93EA, 93F8
F000:93FE B0 72 mov al,72h ; 'r'
F000:9400 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9402 2E: F6 06 E2C0 40 test byte ptr cs:data_158,40h ; (F000:E2C0=0BFh) '@'
F000:9408 B0 45 mov al,45h ; 'E'
F000:940A 74 0A jz short loc_338 ; Jump if zero
F000:940C B0 64 mov al,64h ; 'd'
F000:940E E8 FAC9 call sub_42 ; (8EDA)
F000:9411 E8 E64B call $-19B2h
F000:9414 EB 03 jmp short loc_339 ; (9419)
F000:9416 loc_338: ; xref F000:940A
F000:9416 E8 FAC1 call sub_42 ; (8EDA)
F000:9419 loc_339: ; xref F000:9414
F000:9419 B8 001E mov ax,1Eh
F000:941C A3 001A mov keybd_q_head,ax ; (0040:001A=24h)
F000:941F A3 001C mov keybd_q_tail,ax ; (0040:001C=24h)
F000:9422 A3 0080 mov @keybd_begin,ax ; (0040:0080=1Eh)
F000:9425 05 0020 add ax,20h
F000:9428 A3 0082 mov @keybd_end,ax ; (0040:0082=3Eh)
F000:942B E4 21 in al,21h ; port 21h, 8259-1 int IMR
F000:942D 24 B8 and al,0B8h
F000:942F EB 00 jmp short loc_340 ; (9431)
F000:9431 loc_340: ; xref F000:942F
F000:9431 EB 00 jmp short loc_341 ; (9433)
F000:9433 loc_341: ; xref F000:9431
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 74
F000:9433 E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:9435 FB sti ; Enable interrupts
F000:9436 B0 73 mov al,73h ; 's'
F000:9438 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:943A BE 7E3B mov si,7E3Bh
F000:943D E8 F979 call sub_27 ; (8DB9)
F000:9440 FB sti ; Enable interrupts
F000:9441 B0 04 mov al,4
F000:9443 BA 03F6 mov dx,3F6h
F000:9446 EE out dx,al ; port 3F6h, hdsk0 register
; al = 4, reset controller
F000:9447 B9 0100 mov cx,100h
F000:944A E8 5C1B call sub_264 ; (F068)
F000:944D B0 00 mov al,0
F000:944F EE out dx,al ; port 3F6h, hdsk0 register
F000:9450 B9 FFF0 mov cx,0FFF0h
F000:9453 E8 5C12 call sub_264 ; (F068)
F000:9456 B0 74 mov al,74h ; 't'
F000:9458 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:945A A0 0012 mov al,init_test_flag ; (0040:0012=0BFh)
F000:945D A8 20 test al,20h ; ' '
F000:945F 74 1C jz short loc_343 ; Jump if zero
F000:9461 B0 8E mov al,8Eh
F000:9463 E8 5A39 call sub_257 ; (EE9F)
F000:9466 A8 C0 test al,0C0h
F000:9468 75 08 jnz short loc_342 ; Jump if not zero
F000:946A B8 FF90 mov ax,0FF90h
F000:946D E8 FEC4 call sub_49 ; (9334)
F000:9470 74 0B jz short loc_343 ; Jump if zero
F000:9472 loc_342: ; xref F000:9468
F000:9472 2E: F6 06 E2C0 30 test byte ptr cs:data_158,30h ; (F000:E2C0=0BFh) '0'
F000:9478 74 03 jz short loc_343 ; Jump if zero
F000:947A E8 1F46 call sub_136 ; (B3C3)
F000:947D loc_343: ; xref F000:945F, 9470, 9478
F000:947D FB sti ; Enable interrupts
F000:947E B0 75 mov al,75h ; 'u'
F000:9480 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9482 B0 8E mov al,8Eh
F000:9484 E8 5A18 call sub_257 ; (EE9F)
F000:9487 A8 C0 test al,0C0h
F000:9489 75 15 jnz short loc_344 ; Jump if not zero
F000:948B B0 92 mov al,92h
F000:948D E8 5A0F call sub_257 ; (EE9F)
F000:9490 0A C0 or al,al ; Zero ?
F000:9492 74 0C jz short loc_344 ; Jump if zero
F000:9494 B0 76 mov al,76h ; 'v'
F000:9496 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9498 E8 13FD call sub_118 ; (A898)
F000:949B FB sti ; Enable interrupts
F000:949C B0 77 mov al,77h ; 'w'
F000:949E E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:94A0 loc_344: ; xref F000:9489, 9492
F000:94A0 5B pop bx
F000:94A1 87 DD xchg bx,bp
F000:94A3 53 push bx
F000:94A4 B0 78 mov al,78h ; 'x'
F000:94A6 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 75
F000:94A8 E8 E210 call $-1DEDh
F000:94AB B0 79 mov al,79h ; 'y'
F000:94AD E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:94AF 8B 1E 0013 mov bx,ds:data_32e ; (C000:0013=4553h)
F000:94B3 B8 8E8E mov ax,8E8Eh
F000:94B6 E8 59E6 call sub_257 ; (EE9F)
F000:94B9 A8 C0 test al,0C0h
F000:94BB 75 3D jnz short loc_347 ; Jump if not zero
F000:94BD 50 push ax
F000:94BE E8 F982 call sub_33 ; (8E43)
F000:94C1 B0 7A mov al,7Ah ; 'z'
F000:94C3 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:94C5 B8 9596 mov ax,9596h
F000:94C8 E8 0369 call sub_55 ; (9834)
F000:94CB 3B C3 cmp ax,bx
F000:94CD 74 08 je short loc_345 ; Jump if equal
F000:94CF 81 CD 0100 or bp,100h
F000:94D3 58 pop ax
F000:94D4 0C 10 or al,10h
F000:94D6 50 push ax
F000:94D7 loc_345: ; xref F000:94CD
F000:94D7 B8 B0B1 mov ax,0B0B1h
F000:94DA E8 59C2 call sub_257 ; (EE9F)
F000:94DD 86 C4 xchg al,ah
F000:94DF E8 59BD call sub_257 ; (EE9F)
F000:94E2 8B C8 mov cx,ax
F000:94E4 B8 9798 mov ax,9798h
F000:94E7 E8 034A call sub_55 ; (9834)
F000:94EA 3B C1 cmp ax,cx
F000:94EC 58 pop ax
F000:94ED 74 06 jz short loc_346 ; Jump if zero
F000:94EF 81 CD 0100 or bp,100h
F000:94F3 0C 10 or al,10h
F000:94F5 loc_346: ; xref F000:94ED
F000:94F5 86 C4 xchg al,ah
F000:94F7 E8 59B4 call sub_258 ; (EEAE)
F000:94FA loc_347: ; xref F000:94BB
F000:94FA B0 7B mov al,7Bh ; '{'
F000:94FC E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:94FE 68 9505 push 9505h
F000:9501 68 FA4E push 0FA4Eh
F000:9504 C3 retn
F000:9505 B0 7C E6 80 E8 C4 db 0B0h, 7Ch, 0E6h, 80h, 0E8h, 0C4h
F000:950B E1 FB B0 7D E6 80 db 0E1h, 0FBh, 0B0h, 7Dh, 0E6h, 80h
F000:9511 B8 B3 B3 E8 88 59 db 0B8h, 0B3h, 0B3h, 0E8h, 88h, 59h
F000:9517 24 7F 80 FB 08 76 db 24h, 7Fh, 80h, 0FBh, 8, 76h
F000:951D 02 0C 80 86 C4 E8 db 2, 0Ch, 80h, 86h, 0C4h, 0E8h
F000:9523 89 59 8B C3 98 C1 db 89h, 59h, 8Bh, 0C3h, 98h, 0C1h
F000:9529 E0 06 50 2E F6 06 db 0E0h, 6, 50h, 2Eh, 0F6h, 6
F000:952F C0 E2 40 74 0B 48 db 0C0h, 0E2h, 40h, 74h, 0Bh, 48h
F000:9535 8B C8 C1 E0 06 A3 db 8Bh, 0C8h, 0C1h, 0E0h, 6, 0A3h
F000:953B 0E 00 EB 15 db 0Eh, 0, 0EBh, 15h
F000:953F loc_348:
F000:953F 8B C8 mov cx,ax
F000:9541 B0 8E mov al,8Eh
F000:9543 E8 5959 call sub_257 ; (EE9F)
F000:9546 A8 C0 test al,0C0h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 76
F000:9548 75 0A jnz short loc_349 ; Jump if not zero
F000:954A B0 B8 mov al,0B8h
F000:954C E8 5950 call sub_257 ; (EE9F)
F000:954F A8 10 test al,10h
F000:9551 74 01 jz short loc_349 ; Jump if zero
F000:9553 49 dec cx
F000:9554 loc_349: ; xref F000:9548, 9551
F000:9554 89 0E 0013 mov ds:data_32e,cx ; (C000:0013=4553h)
F000:9558 B8 B0B1 mov ax,0B0B1h
F000:955B E8 5941 call sub_257 ; (EE9F)
F000:955E 86 C4 xchg al,ah
F000:9560 E8 593C call sub_257 ; (EE9F)
F000:9563 C1 E0 06 shl ax,6 ; Shift w/zeros fill
F000:9566 50 push ax
F000:9567 B0 B1 mov al,0B1h
F000:9569 E8 5942 call sub_258 ; (EEAE)
F000:956C 58 pop ax
F000:956D B4 B0 mov ah,0B0h
F000:956F 86 C4 xchg al,ah
F000:9571 E8 593A call sub_258 ; (EEAE)
F000:9574 B0 7E mov al,7Eh ; '~'
F000:9576 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9578 E8 E0F3 call $-1F0Ah
F000:957B FB sti ; Enable interrupts
F000:957C C7 06 007C 0101 mov word ptr ds:data_51e,101h ; (C000:007C=2E43h)
F000:9582 C7 06 007E 0101 mov word ptr ds:data_52e,101h ; (C000:007E=0A0Dh)
F000:9588 C7 06 0078 1414 mov word ptr ds:data_49e,1414h ; (C000:0078=2053h)
F000:958E C7 06 007A 1414 mov word ptr ds:data_50e,1414h ; (C000:007A=4E49h)
F000:9594 B0 7F mov al,7Fh
F000:9596 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9598 B0 8D mov al,8Dh
F000:959A E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
F000:959C E8 F8A4 call sub_33 ; (8E43)
F000:959F E8 1618 call sub_121 ; (ABBA)
F000:95A2 33 C9 xor cx,cx ; Zero register
F000:95A4 loc_350: ; xref F000:95B1, 95B6
F000:95A4 B4 01 mov ah,1
F000:95A6 CD 16 int 16h ; Keyboard i/o ah=function 01h
; get status, if zf=0 al=char
F000:95A8 74 0E jz short loc_351 ; Jump if zero
F000:95AA B4 00 mov ah,0
F000:95AC CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:95AE 80 FC 53 cmp ah,53h ; 'S'
F000:95B1 75 F1 jne loc_350 ; Jump if not equal
F000:95B3 B9 5555 mov cx,5555h
F000:95B6 EB EC jmp short loc_350 ; (95A4)
F000:95B8 loc_351: ; xref F000:95A8
F000:95B8 51 push cx
F000:95B9 33 C0 xor ax,ax ; Zero register
F000:95BB BF 0600 mov di,600h
F000:95BE B9 7D00 mov cx,7D00h
F000:95C1 FA cli ; Disable interrupts
F000:95C2 FC cld ; Clear direction
F000:95C3 F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:95C5 FB sti ; Enable interrupts
F000:95C6 B0 80 mov al,80h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 77
F000:95C8 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:95CA BB C800 mov bx,0C800h
F000:95CD loc_352: ; xref F000:95D4
F000:95CD E8 F971 call sub_47 ; (8F41)
F000:95D0 81 FB E000 cmp bx,0E000h
F000:95D4 72 F7 jb loc_352 ; Jump if below
F000:95D6 B0 8D mov al,8Dh
F000:95D8 E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
F000:95DA E8 F866 call sub_33 ; (8E43)
F000:95DD B0 81 mov al,81h
F000:95DF E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:95E1 B0 8E mov al,8Eh
F000:95E3 E8 58B9 call sub_257 ; (EE9F)
F000:95E6 A8 C0 test al,0C0h
F000:95E8 75 58 jnz short loc_355 ; Jump if not zero
F000:95EA B4 02 mov ah,2
F000:95EC CD 1A int 1Ah ; Real time clock ah=func 02h
; read clock cx=hrs/min, dh=sec
F000:95EE 72 41 jc short loc_354 ; Jump if carry Set
F000:95F0 80 FE 60 cmp dh,60h ; '`'
F000:95F3 73 3C jae short loc_354 ; Jump if above or =
F000:95F5 80 F9 60 cmp cl,60h ; '`'
F000:95F8 73 37 jae short loc_354 ; Jump if above or =
F000:95FA 80 FD 24 cmp ch,24h ; '$'
F000:95FD 73 32 jae short loc_354 ; Jump if above or =
F000:95FF 8A C6 mov al,dh
F000:9601 E8 0226 call sub_54 ; (982A)
F000:9604 6B C0 12 imul ax,ax,12h ; reg1 = reg2 * value
F000:9607 91 xchg ax,cx
F000:9608 50 push ax
F000:9609 E8 021E call sub_54 ; (982A)
F000:960C 69 C0 0444 imul ax,ax,444h ; reg1 = reg2 * value
F000:9610 03 C8 add cx,ax
F000:9612 58 pop ax
F000:9613 8A C4 mov al,ah
F000:9615 E8 0212 call sub_54 ; (982A)
F000:9618 50 push ax
F000:9619 6B C0 07 imul ax,ax,7 ; reg1 = reg2 * value
F000:961C 03 C1 add ax,cx
F000:961E loc_353: ; xref F000:9645
F000:961E FA cli ; Disable interrupts
F000:961F A3 006C mov ds:data_44e,ax ; (C000:006C=4D20h)
F000:9622 58 pop ax
F000:9623 15 0000 adc ax,0
F000:9626 A3 006E mov ds:data_45e,ax ; (C000:006E=4349h)
F000:9629 C6 06 0070 00 mov byte ptr ds:data_46e,0 ; (C000:0070=52h)
F000:962E FB sti ; Enable interrupts
F000:962F EB 16 jmp short loc_356 ; (9647)
F000:9631 loc_354: ; xref F000:95EE, 95F3, 95F8, 95FD
F000:9631 81 CD 0200 or bp,200h
F000:9635 B8 8E8E mov ax,8E8Eh
F000:9638 E8 5864 call sub_257 ; (EE9F)
F000:963B 0C 04 or al,4
F000:963D 86 C4 xchg al,ah
F000:963F E8 586C call sub_258 ; (EEAE)
F000:9642 loc_355: ; xref F000:95E8
F000:9642 33 C0 xor ax,ax ; Zero register
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 78
F000:9644 50 push ax
F000:9645 EB D7 jmp short loc_353 ; (961E)
F000:9647 loc_356: ; xref F000:962F
F000:9647 FB sti ; Enable interrupts
F000:9648 FC cld ; Clear direction
F000:9649 58 pop ax
F000:964A A3 0069 mov ds:data_43e,ax ; (C000:0069=4E45h)
F000:964D 58 pop ax
F000:964E A3 0067 mov ds:data_42e,ax ; (C000:0067=4449h)
F000:9651 33 DB xor bx,bx ; Zero register
F000:9653 33 FF xor di,di ; Zero register
F000:9655 BA 03BC mov dx,3BCh
F000:9658 E8 01E5 call sub_56 ; (9840)
F000:965B BA 0378 mov dx,378h
F000:965E E8 01DF call sub_56 ; (9840)
F000:9661 BA 0278 mov dx,278h
F000:9664 E8 01D9 call sub_56 ; (9840)
F000:9667 57 push di
F000:9668 B0 82 mov al,82h
F000:966A E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:966C 33 FF xor di,di ; Zero register
F000:966E BA 03F8 mov dx,3F8h
F000:9671 E8 01D8 call sub_57 ; (984C)
F000:9674 BA 02F8 mov dx,2F8h
F000:9677 E8 01D2 call sub_57 ; (984C)
F000:967A BA 03E8 mov dx,3E8h
F000:967D E8 01CC call sub_57 ; (984C)
F000:9680 BA 02E8 mov dx,2E8h
F000:9683 E8 01C6 call sub_57 ; (984C)
F000:9686 58 pop ax
F000:9687 C0 C8 03 ror al,3 ; Rotate
F000:968A 0B C7 or ax,di
F000:968C 08 06 0011 or ds:data_30e,al ; (C000:0011=52h)
F000:9690 B0 83 mov al,83h
F000:9692 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9694 80 26 0010 FD and byte ptr ds:data_29e,0FDh ; (C000:0010=20h)
F000:9699 90 nop ;
F000:969A DB E3 fninit ; Initialize math uP
F000:969C 60 pusha ; Save all regs
F000:969D 61 popa ; Restore all regs
F000:969E 60 pusha ; Save all regs
F000:969F 61 popa ; Restore all regs
F000:96A0 60 pusha ; Save all regs
F000:96A1 61 popa ; Restore all regs
F000:96A2 DF E0 fnstsw ax ; Store status word
F000:96A4 22 C0 and al,al
F000:96A6 75 0F jnz short loc_359 ; Jump if not zero
F000:96A8 80 0E 0010 02 or byte ptr ds:data_29e,2 ; (C000:0010=20h)
F000:96AD E4 A1 in al,0A1h ; port 0A1h, 8259-2 int IMR
F000:96AF 24 DF and al,0DFh
F000:96B1 EB 00 jmp short loc_357 ; (96B3)
F000:96B3 loc_357: ; xref F000:96B1
F000:96B3 EB 00 jmp short loc_358 ; (96B5)
F000:96B5 loc_358: ; xref F000:96B3
F000:96B5 E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
F000:96B7 loc_359: ; xref F000:96A6
F000:96B7 E4 21 in al,21h ; port 21h, 8259-1 int IMR
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 79
F000:96B9 24 F8 and al,0F8h
F000:96BB EB 00 jmp short loc_360 ; (96BD)
F000:96BD loc_360: ; xref F000:96BB
F000:96BD EB 00 jmp short loc_361 ; (96BF)
F000:96BF loc_361: ; xref F000:96BD
F000:96BF E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:96C1 B0 84 mov al,84h
F000:96C3 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:96C5 E4 64 in al,64h ; port 64h, keyboard status
F000:96C7 A8 10 test al,10h
F000:96C9 75 04 jnz short loc_362 ; Jump if not zero
F000:96CB 81 CD 1000 or bp,1000h
F000:96CF loc_362: ; xref F000:96C9
F000:96CF C6 06 0017 00 mov byte ptr ds:data_33e,0 ; (C000:0017=45h)
F000:96D4 C6 06 0096 A0 mov byte ptr ds:data_59e,0A0h ; (C000:0096=20h)
F000:96D9 A0 0012 mov al,ds:data_31e ; (C000:0012=45h)
F000:96DC A8 20 test al,20h ; ' '
F000:96DE 74 05 jz short loc_363 ; Jump if zero
F000:96E0 B0 F2 mov al,0F2h
F000:96E2 E8 091C call sub_75 ; (A001)
F000:96E5 loc_363: ; xref F000:96DE
F000:96E5 FB sti ; Enable interrupts
F000:96E6 B9 FFF0 mov cx,0FFF0h
F000:96E9 E8 597C call sub_264 ; (F068)
F000:96EC 80 26 0096 1F and byte ptr ds:data_59e,1Fh ; (C000:0096=20h)
F000:96F1 80 26 0097 7F and byte ptr ds:data_60e,7Fh ; (C000:0097=51h)
F000:96F6 E4 A1 in al,0A1h ; port 0A1h, 8259-2 int IMR
F000:96F8 24 FD and al,0FDh
F000:96FA EB 00 jmp short loc_364 ; (96FC)
F000:96FC loc_364: ; xref F000:96FA
F000:96FC EB 00 jmp short loc_365 ; (96FE)
F000:96FE loc_365: ; xref F000:96FC
F000:96FE E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
F000:9700 B0 85 mov al,85h
F000:9702 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9704 5B pop bx
F000:9705 55 push bp
F000:9706 B8 02B7 mov ax,2B7h
F000:9709 E8 FC28 call sub_49 ; (9334)
F000:970C 75 04 jnz short loc_366 ; Jump if not zero
F000:970E 81 E5 F3FF and bp,0F3FFh
F000:9712 loc_366: ; xref F000:970C
F000:9712 81 E5 7FFF and bp,7FFFh
F000:9716 75 07 jnz short loc_367 ; Jump if not zero
F000:9718 0B DB or bx,bx ; Zero ?
F000:971A 75 03 jnz short loc_367 ; Jump if not zero
F000:971C E9 0082 jmp loc_374 ; (97A1)
F000:971F loc_367: ; xref F000:9716, 971A
F000:971F E8 F6E5 call sub_31 ; (8E07)
F000:9722 B9 8000 mov cx,8000h
F000:9725 E8 5940 call sub_264 ; (F068)
F000:9728 E8 F6DC call sub_31 ; (8E07)
F000:972B BE 7AB2 mov si,7AB2h
F000:972E E8 00DC call sub_52 ; (980D)
F000:9731 87 EB xchg bp,bx
F000:9733 E8 00D7 call sub_52 ; (980D)
F000:9736 F7 C5 0020 test bp,20h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 80
F000:973A 75 06 jnz short loc_368 ; Jump if not zero
F000:973C F7 C3 07E2 test bx,7E2h
F000:9740 74 17 jz short loc_369 ; Jump if zero
F000:9742 loc_368: ; xref F000:973A
F000:9742 BE 7CE8 mov si,7CE8h
F000:9745 E8 F67F call sub_28 ; (8DC7)
F000:9748 E8 00D8 call sub_53 ; (9823)
F000:974B 2E: F6 06 E2C0 80 test byte ptr cs:data_158,80h ; (F000:E2C0=0BFh)
F000:9751 74 06 jz short loc_369 ; Jump if zero
F000:9753 81 0E 0069 AAAA or word ptr ds:data_43e,0AAAAh ; (C000:0069=4E45h)
F000:9759 loc_369: ; xref F000:9740, 9751
F000:9759 BE 7CFA mov si,7CFAh
F000:975C E8 00C4 call sub_53 ; (9823)
F000:975F A0 0012 mov al,ds:data_31e ; (C000:0012=45h)
F000:9762 A8 20 test al,20h ; ' '
F000:9764 74 3B jz short loc_374 ; Jump if zero
F000:9766 2E: A0 E2C0 mov al,cs:data_158 ; (F000:E2C0=0BFh)
F000:976A A8 80 test al,80h
F000:976C 74 21 jz short loc_372 ; Jump if zero
F000:976E A8 02 test al,2
F000:9770 75 08 jnz short loc_370 ; Jump if not zero
F000:9772 81 E5 F9FF and bp,0F9FFh
F000:9776 81 E3 EFFF and bx,0EFFFh
F000:977A loc_370: ; xref F000:9770
F000:977A A8 20 test al,20h ; ' '
F000:977C 75 03 jnz short loc_371 ; Jump if not zero
F000:977E 83 E5 FE and bp,0FFFEh
F000:9781 loc_371: ; xref F000:977C
F000:9781 0B ED or bp,bp ; Zero ?
F000:9783 75 13 jnz short loc_373 ; Jump if not zero
F000:9785 0B DB or bx,bx ; Zero ?
F000:9787 74 06 jz short loc_372 ; Jump if zero
F000:9789 F7 C3 0004 test bx,4
F000:978D 74 09 jz short loc_373 ; Jump if zero
F000:978F loc_372: ; xref F000:976C, 9787
F000:978F FB sti ; Enable interrupts
F000:9790 B9 FFF0 mov cx,0FFF0h
F000:9793 E8 58D2 call sub_264 ; (F068)
F000:9796 EB 09 jmp short loc_374 ; (97A1)
F000:9798 loc_373: ; xref F000:9783, 978D, 979F
F000:9798 B4 00 mov ah,0
F000:979A CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:979C 80 FC 3B cmp ah,3Bh ; ';'
F000:979F 75 F7 jne loc_373 ; Jump if not equal
F000:97A1 loc_374: ; xref F000:971C, 9764, 9796
F000:97A1 5D pop bp
F000:97A2 A0 0012 mov al,ds:data_31e ; (C000:0012=45h)
F000:97A5 A8 20 test al,20h ; ' '
F000:97A7 75 1F jnz short loc_375 ; Jump if not zero
F000:97A9 FB sti ; Enable interrupts
F000:97AA B8 008F mov ax,8Fh
F000:97AD E8 56FE call sub_258 ; (EEAE)
F000:97B0 C7 06 0072 0000 mov word ptr ds:data_47e,0 ; (C000:0072=5953h)
F000:97B6 B9 FFF0 mov cx,0FFF0h
F000:97B9 E8 58AC call sub_264 ; (F068)
F000:97BC B9 FFF0 mov cx,0FFF0h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 81
F000:97BF E8 58A6 call sub_264 ; (F068)
F000:97C2 E8 F642 call sub_31 ; (8E07)
F000:97C5 E9 4893 jmp loc_1197 ; (E05B)
F000:97C8 loc_375: ; xref F000:97A7
F000:97C8 83 3E 0069 00 cmp word ptr ds:data_43e,0 ; (C000:0069=4E45h)
F000:97CD 74 03 je short loc_376 ; Jump if equal
F000:97CF E8 2514 call sub_164 ; (BCE6)
F000:97D2 loc_376: ; xref F000:97CD
F000:97D2 E8 F632 call sub_31 ; (8E07)
F000:97D5 B4 0F mov ah,0Fh
F000:97D7 CD 10 int 10h ; Video display ah=functn 0Fh
; get state, al=mode, bh=page
F000:97D9 32 E4 xor ah,ah ; Zero register
F000:97DB CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:97DD B0 0D mov al,0Dh
F000:97DF E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 0Dh, status register D
F000:97E1 E8 F65F call sub_33 ; (8E43)
F000:97E4 FB sti ; Enable interrupts
F000:97E5 FC cld ; Clear direction
F000:97E6 B0 86 mov al,86h
F000:97E8 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:97EA BB E000 mov bx,0E000h
F000:97ED 88 1E 0072 mov ds:data_47e,bl ; (C000:0072=53h)
F000:97F1 A1 0067 mov ax,ds:data_42e ; (C000:0067=4449h)
F000:97F4 50 push ax
F000:97F5 E8 F749 call sub_47 ; (8F41)
F000:97F8 58 pop ax
F000:97F9 A3 0067 mov ds:data_42e,ax ; (C000:0067=4449h)
F000:97FC B0 00 mov al,0
F000:97FE E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:9800 E8 2F9D call sub_196 ; (C7A0)
F000:9803 75 05 jnz short loc_377 ; Jump if not zero
F000:9805 B8 0008 mov ax,8
F000:9808 FF D0 call ax ;*
F000:980A loc_377: ; xref F000:9803
F000:980A E9 F77F jmp loc_284 ; (8F8C)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:972E, 9733
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_52 proc near
F000:980D B9 0010 mov cx,10h
F000:9810 locloop_378: ; xref F000:9820
F000:9810 FA cli ; Disable interrupts
F000:9811 FC cld ; Clear direction
F000:9812 2E: AD lods word ptr cs:[si] ; String [si] to ax
F000:9814 FB sti ; Enable interrupts
F000:9815 D1 CD ror bp,1 ; Rotate
F000:9817 73 07 jnc short loc_379 ; Jump if carry=0
F000:9819 56 push si
F000:981A 8B F0 mov si,ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 82
F000:981C E8 0004 call sub_53 ; (9823)
F000:981F 5E pop si
F000:9820 loc_379: ; xref F000:9817
F000:9820 E2 EE loop locloop_378 ; Loop if cx > 0
F000:9822 C3 retn
sub_52 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9748, 975C, 981C
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_53 proc near
F000:9823 E8 F5A1 call sub_28 ; (8DC7)
F000:9826 E8 F590 call sub_27 ; (8DB9)
F000:9829 C3 retn
sub_53 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9601, 9609, 9615
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_54 proc near
F000:982A 8A E0 mov ah,al
F000:982C C0 EC 04 shr ah,4 ; Shift w/zeros fill
F000:982F 24 0F and al,0Fh
F000:9831 D5 0A aad ; Ascii adjust
F000:9833 C3 retn
sub_54 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:94C8, 94E7
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_55 proc near
F000:9834 E8 5668 call sub_257 ; (EE9F)
F000:9837 86 C4 xchg al,ah
F000:9839 E8 5663 call sub_257 ; (EE9F)
F000:983C C1 E8 06 shr ax,6 ; Shift w/zeros fill
F000:983F C3 retn
sub_55 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9658, 965E, 9664
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 83
sub_56 proc near
F000:9840 E8 353F call sub_208 ; (CD82)
F000:9843 75 06 jnz short loc_ret_380 ; Jump if not zero
F000:9845 89 95 0008 mov [di+8],dx
nop ;*Fixup for MASM (M)
F000:9849 47 inc di
F000:984A 47 inc di
F000:984B loc_ret_380: ; xref F000:9843
F000:984B C3 retn
sub_56 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9671, 9677, 967D, 9683
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_57 proc near
F000:984C 52 push dx
F000:984D 42 inc dx
F000:984E 42 inc dx
F000:984F EC in al,dx ; port 3FAh, RS232-1 int identy
F000:9850 A8 F8 test al,0F8h
F000:9852 5A pop dx
F000:9853 75 06 jnz short loc_ret_381 ; Jump if not zero
F000:9855 89 95 0000 mov [di+0],dx
nop ;*Fixup for MASM (M)
F000:9859 47 inc di
F000:985A 47 inc di
F000:985B loc_ret_381: ; xref F000:9853
F000:985B C3 retn
sub_57 endp
F000:985C 000A[FE] db 10 dup (0FEh)
F000:9866 D5 66 5E 66 96 76 db 0D5h, 66h, 5Eh, 66h, 96h, 76h
F000:986C 76 6E 5E 96 7E 4E db 76h, 6Eh, 5Eh, 96h, 7Eh, 4Eh
F000:9872 76 66 36 7E 96 A1 db 76h, 66h, 36h, 7Eh, 96h, 0A1h
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A8F5
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_58 proc near
F000:9878 51 push cx
F000:9879 BF 0104 mov di,104h
F000:987C B5 9B mov ch,9Bh
F000:987E EB 06 jmp short loc_382 ; (9886)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:A932
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 84
sub_59:
F000:9880 51 push cx
F000:9881 BF 0118 mov di,118h
F000:9884 B5 A4 mov ch,0A4h
F000:9886 loc_382: ; xref F000:987E
F000:9886 FA cli ; Disable interrupts
F000:9887 FC cld ; Clear direction
F000:9888 52 push dx
F000:9889 06 push es
F000:988A 2E: F6 06 E2C0 40 test byte ptr cs:data_158,40h ; (F000:E2C0=0BFh) '@'
F000:9890 75 0C jnz short loc_383 ; Jump if not zero
F000:9892 B0 B8 mov al,0B8h
F000:9894 E8 5608 call sub_257 ; (EE9F)
F000:9897 A8 10 test al,10h
F000:9899 B8 002D mov ax,2Dh
F000:989C 74 0B jz short loc_384 ; Jump if zero
F000:989E loc_383: ; xref F000:9890
F000:989E A1 0013 mov ax,ds:data_32e ; (C000:0013=4553h)
F000:98A1 98 cbw ; Convrt byte to word
F000:98A2 C1 E0 06 shl ax,6 ; Shift w/zeros fill
F000:98A5 48 dec ax
F000:98A6 C1 E0 06 shl ax,6 ; Shift w/zeros fill
F000:98A9 loc_384: ; xref F000:989C
F000:98A9 8B D0 mov dx,ax
F000:98AB B8 003D mov ax,3Dh
F000:98AE 80 FD 9B cmp ch,9Bh
F000:98B1 74 03 je short loc_385 ; Jump if equal
F000:98B3 B8 004D mov ax,4Dh
F000:98B6 loc_385: ; xref F000:98B1
F000:98B6 AB stosw ; Store ax to es:[di]
F000:98B7 50 push ax
F000:98B8 8B C2 mov ax,dx
F000:98BA AB stosw ; Store ax to es:[di]
F000:98BB 8E C0 mov es,ax
F000:98BD 3D F7FA cmp ax,0F7FAh
F000:98C0 75 00 jne short loc_386 ; Jump if not equal
F000:98C2 loc_386: ; xref F000:98C0
F000:98C2 5F pop di
F000:98C3 06 push es
F000:98C4 E8 002F call sub_60 ; (98F6)
F000:98C7 E8 002C call sub_60 ; (98F6)
F000:98CA E8 0029 call sub_60 ; (98F6)
F000:98CD 33 C0 xor ax,ax ; Zero register
F000:98CF AB stosw ; Store ax to es:[di]
F000:98D0 E8 0023 call sub_60 ; (98F6)
F000:98D3 E8 0020 call sub_60 ; (98F6)
F000:98D6 32 C0 xor al,al ; Zero register
F000:98D8 AA stosb ; Store al to es:[di]
F000:98D9 E8 001A call sub_60 ; (98F6)
F000:98DC 33 C0 xor ax,ax ; Zero register
F000:98DE locloop_387:
F000:98DE AB stosw ; Store ax to es:[di]
F000:98DF AA stosb ; Store al to es:[di]
F000:98E0 E8 0013 call sub_60 ; (98F6)
F000:98E3 E8 0010 call sub_60 ; (98F6)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 85
F000:98E6 E8 000D call sub_60 ; (98F6)
F000:98E9 32 C0 xor al,al ; Zero register
F000:98EB AA stosb ; Store al to es:[di]
F000:98EC 58 pop ax
F000:98ED 3D F7FA cmp ax,0F7FAh
F000:98F0 75 00 jne short loc_388 ; Jump if not equal
F000:98F2 loc_388: ; xref F000:98F0
F000:98F2 07 pop es
F000:98F3 5A pop dx
F000:98F4 59 pop cx
F000:98F5 C3 retn
sub_58 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:98C4, 98C7, 98CA, 98D0, 98D3, 98D9, 98E0
; 98E3, 98E6
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_60 proc near
F000:98F6 8A C5 mov al,ch
F000:98F8 FE C5 inc ch
F000:98FA E8 55A2 call sub_257 ; (EE9F)
F000:98FD AA stosb ; Store al to es:[di]
F000:98FE C3 retn
sub_60 endp
F000:98FF 00 F0 db 0, 0F0h
F000:9901 78 79 7A 7B 7C 7D db 'xyz{|}~', 7Fh
F000:9907 7E 7F
F000:9909 80 81 82 83 F0 db 80h, 81h, 82h, 83h, 0F0h
F000:990E locloop_389:
F000:990E A5 movsw ; Mov [si] to es:[di]
F000:990F 10 11 adc [bx+di],dl
F000:9911 12 13 adc dl,[bp+di]
F000:9913 14 15 adc al,15h
F000:9915 16 push ss
F000:9916 17 pop ss
F000:9917 18 19 sbb [bx+di],bl
F000:9919 F0 F0 F0 FF 1E 1F db 0F0h, 0F0h, 0F0h, 0FFh, 1Eh, 1Fh
F000:991F 20 21 22 23 24 25 db 20h, 21h, 22h, 23h, 24h, 25h
F000:9925 26 F0 F0 F0 FF F0 db 26h, 0F0h, 0F0h, 0F0h, 0FFh, 0F0h
F000:992B 2C 2D 2E 2F 30 31 db 2Ch, 2Dh, 2Eh, 2Fh, 30h, 31h
F000:9931 32 F0 F0 F0 FF F0 db 32h, 0F0h, 0F0h, 0F0h, 0FFh, 0F0h
F000:9937 FF 20 FF db 0FFh, 20h, 0FFh
F000:993A 68 69 6A 6B 6C 6D db 'hijklmnopq'
F000:9940 6E 6F 70 71
F000:9944 FF FF 07 08 09 F0 db 0FFh, 0FFh, 7, 8, 9, 0F0h
F000:994A 04 05 06 F0 01 02 db 4, 5, 6, 0F0h, 1, 2
F000:9950 03 00 53 FF FF FF db 3, 0, 53h, 0FFh, 0FFh, 0FFh
F000:9956 8B 8C BB E2 B3 E2 db 8Bh, 8Ch, 0BBh, 0E2h, 0B3h, 0E2h
F000:995C 81 79 31 69 B1 C1 db 81h, 79h, 31h, 69h, 0B1h, 0C1h
F000:9962 B9 59 FB F2 E1 E1 db 0B9h, 59h, 0FBh, 0F2h, 0E1h, 0E1h
F000:9968 D1 61 61 FB 92 D1 db 0D1h, 61h, 61h, 0FBh, 92h, 0D1h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 86
F000:996E 59 B9 81 D9 61 FB db 59h, 0B9h, 81h, 0D9h, 61h, 0FBh
F000:9974 B2 89 E1 8B FF FE db 0B2h, 89h, 0E1h, 8Bh, 0FFh, 0FEh
F000:997A 67 04 03 FF 00 0F db 67h, 4, 3, 0FFh, 0, 0Fh
F000:9980 1B FF 00 FF FF FF db 1Bh, 0FFh, 0, 0FFh, 0FFh, 0FFh
F000:9986 1E FF FF FF FF 1F db 1Eh, 0FFh, 0FFh, 0FFh, 0FFh, 1Fh
F000:998C FF 7F 94 11 17 05 db 0FFh, 7Fh, 94h, 11h, 17h, 5
F000:9992 12 14 19 15 09 0F db 12h, 14h, 19h, 15h, 9, 0Fh
F000:9998 10 1B 1D db 10h, 1Bh, 1Dh
F000:999B loc_390: ; xref F000:99E7
F000:999B 0A FF or bh,bh ; Zero ?
F000:999D 01 13 add [bp+di],dx
F000:999F 04 06 add al,6
F000:99A1 07 pop es
F000:99A2 08 0A or [bp+si],cl
F000:99A4 0B 0C or cx,[si]
F000:99A6 FF FF FF FF 1C 1A db 0FFh, 0FFh, 0FFh, 0FFh, 1Ch, 1Ah
F000:99AC 18 03 16 02 0E 0D db 18h, 3, 16h, 2, 0Eh, 0Dh
F000:99B2 FF FF 95 FF 96 FF db 0FFh, 0FFh, 95h, 0FFh, 96h, 0FFh
F000:99B8 20 FF db 20h, 0FFh
F000:99BA 5E 5F 60 61 62 63 db '^_`abcdefgEFw'
F000:99C0 64 65 66 67 45 46
F000:99C6 77
F000:99C7 8D 84 8E 73 8F 74 db 8Dh, 84h, 8Eh, 73h, 8Fh, 74h
F000:99CD 90 75 91 76 92 93 db 90h, 75h, 91h, 76h, 92h, 93h
F000:99D3 FF FF FF 89 8A 5F db 0FFh, 0FFh, 0FFh, 89h, 8Ah, 5Fh
F000:99D9 F2 5B 7F CA CA db 0F2h, 5Bh, 7Fh, 0CAh, 0CAh
F000:99DE loc_391:
F000:99DE F2 7F EE db 0F2h, 7Fh, 0EEh
F000:99E1 5A 62 5A 2E 7A db 5Ah, 62h, 5Ah, 2Eh, 7Ah
F000:99E6 locloop_392:
F000:99E6 4E dec si
F000:99E7 7F B2 jg loc_390 ; Jump if >
F000:99E9 1A 32 sbb dh,[bp+si]
F000:99EB 2E 6A 4A 32 4F 7F db 2Eh, 6Ah, 4Ah, 32h, 4Fh, 7Fh
F000:99F1 DA C6 EE DA FA db 0DAh, 0C6h, 0EEh, 0DAh, 0FAh
F000:99F6 4F 7F 3B 3B 4B 3B db 'O', 7Fh, ';;K;3K'
F000:99FC 33 4B
F000:99FE 1F 2B 1B db 1Fh, 2Bh, 1Bh
F000:9A01 21 40 23 24 db '!@#$'
F000:9A05 25 5E 26 2A 28 29 db '%^&*()_+'
F000:9A0B 5F 2B
F000:9A0D 08 00 db 8, 0
F000:9A0F 51 57 45 52 54 59 db 'QWERTYUIOP{}', 0Dh
F000:9A15 55 49 4F 50 7B 7D
F000:9A1B 0D
F000:9A1C FF db 0FFh
F000:9A1D 41 53 44 46 47 48 db 'ASDFGHJKL:"~'
F000:9A23 4A 4B 4C 3A 22 7E
F000:9A29 FF db 0FFh
F000:9A2A 7C 5A 58 43 56 42 db '|ZXCVBNM<>?'
F000:9A30 4E 4D 3C 3E 3F
F000:9A35 FF 2A FF 20 FF db 0FFh, 2Ah, 0FFh, 20h, 0FFh
F000:9A3A 54 55 56 57 58 59 db 'TUVWXYZ[\]'
F000:9A40 5A 5B 5C 5D
F000:9A44 FF FF db 0FFh, 0FFh
F000:9A46 37 38 39 2D 34 35 db '789-456+1230.'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 87
F000:9A4C 36 2B 31 32 33 30
F000:9A52 2E
F000:9A53 FF FF 7C 87 88 db 0FFh, 0FFh, 7Ch, 87h, 88h
F000:9A58 2A 35 36 37 38 39 db '*56789?/'
F000:9A5E 3F 2F
F000:9A60 BB E2 B3 E2 81 79 db 0BBh, 0E2h, 0B3h, 0E2h, 81h, 79h
F000:9A66 31 69 B1 C1 B9 59 db 31h, 69h, 0B1h, 0C1h, 0B9h, 59h
F000:9A6C FB F2 E1 E1 D1 61 db 0FBh, 0F2h, 0E1h, 0E1h, 0D1h, 61h
F000:9A72 61 FB 92 D1 59 B9 db 61h, 0FBh, 92h, 0D1h, 59h, 0B9h
F000:9A78 81 D9 61 FB B2 89 db 81h, 0D9h, 61h, 0FBh, 0B2h, 89h
F000:9A7E E1 8B 1B db 0E1h, 8Bh, 1Bh
F000:9A81 31 32 33 34 35 db 31h, 32h, 33h, 34h, 35h
F000:9A86 loc_393:
F000:9A86 36 37 38 39 30 2D db 36h, 37h, 38h, 39h, 30h, 2Dh
F000:9A8C 3D 08 db 3Dh, 8
F000:9A8E 09 71 77 65 72 74 db 9, 'qwertyuio'
F000:9A94 79 75 69 6F
F000:9A98 loc_394:
F000:9A98 70 5B jo short loc_395 ; Jump if overflow=1
F000:9A9A 5D pop bp
F000:9A9B 0D 61FF or ax,61FFh
F000:9A9E 73 64 jnc short loc_396 ; Jump if carry=0
F000:9AA0 66 67 68 6A 6B 6C db 'fghjkl;', 27h, '`'
F000:9AA6 3B 27 60
F000:9AA9 FF db 0FFh
F000:9AAA 5C 7A 78 63 76 62 db '\zxcvbnm,./'
F000:9AB0 6E 6D 2C 2E 2F
F000:9AB5 FF 2A FF 20 FF db 0FFh, 2Ah, 0FFh, 20h, 0FFh
F000:9ABA 3B 3C 3D 3E 3F 40 db ';<=>?@ABCD'
F000:9AC0 41 42 43 44
F000:9AC4 FF FF 47 48 49 2D db 0FFh, 0FFh, 47h, 48h, 49h, 2Dh
F000:9ACA 4B F0 4D 2B 4F 50 db 4Bh, 0F0h, 4Dh, 2Bh, 4Fh, 50h
F000:9AD0 51 52 53 FF FF 5C db 51h, 52h, 53h, 0FFh, 0FFh, 5Ch
F000:9AD6 85 86 5F F2 5B 7F db 85h, 86h, 5Fh, 0F2h, 5Bh, 7Fh
F000:9ADC CA CA F2 7F EE 5A db 0CAh, 0CAh, 0F2h, 7Fh, 0EEh, 5Ah
F000:9AE2 62 5A 2E 7A 4E 7F db 62h, 5Ah, 2Eh, 7Ah, 4Eh, 7Fh
F000:9AE8 B2 1A 32 2E 6A 4A db 0B2h, 1Ah, 32h, 2Eh, 6Ah, 4Ah
F000:9AEE 32 4F 7F DA C6 EE db 32h, 4Fh, 7Fh, 0DAh, 0C6h, 0EEh
F000:9AF4 DA db 0DAh
F000:9AF5 loc_395: ; xref F000:9A98
F000:9AF5 FA cli ; Disable interrupts
F000:9AF6 4F dec di
F000:9AF7 7F 3B jg short loc_401 ; Jump if >
F000:9AF9 3B 4B 3B cmp cx,[bp+di+3Bh]
F000:9AFC 33 4B 1F xor cx,[bp+di+1Fh]
F000:9AFF 2B FB sub di,bx
F000:9B01 FC cld ; Clear direction
F000:9B02 60 pusha ; Save all regs
F000:9B03 1E push ds
F000:9B04 loc_396: ; xref F000:9A9E
F000:9B04 8B EC mov bp,sp
F000:9B06 6A 40 push 40h
F000:9B08 1F pop ds
F000:9B09 E8 03FE call sub_69 ; (9F0A)
F000:9B0C F9 stc ; Set carry flag
F000:9B0D B4 4F mov ah,4Fh ; 'O'
F000:9B0F CD 15 int 15h ; General services, ah=func 4Fh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 88
; change keyboard scan code
F000:9B11 loc_397:
F000:9B11 FA cli ; Disable interrupts
F000:9B12 loc_398:
F000:9B12 73 69 jnc short loc_406 ; Jump if carry=0
F000:9B14 3C FE cmp al,0FEh
F000:9B16 75 07 jne short loc_399 ; Jump if not equal
F000:9B18 80 0E 0097 20 or keybd_flags_4,20h ; (0040:0097=10h) ' '
F000:9B1D EB 5E jmp short loc_406 ; (9B7D)
F000:9B1F loc_399: ; xref F000:9B16
F000:9B1F 3C FA cmp al,0FAh
F000:9B21 75 07 jne short loc_400 ; Jump if not equal
F000:9B23 80 0E 0097 10 or keybd_flags_4,10h ; (0040:0097=10h)
F000:9B28 EB 53 jmp short loc_406 ; (9B7D)
F000:9B2A loc_400: ; xref F000:9B21
F000:9B2A FB sti ; Enable interrupts
F000:9B2B 50 push ax
F000:9B2C E8 047D call sub_72 ; (9FAC)
F000:9B2F 74 03 jz short loc_401 ; Jump if zero
F000:9B31 E8 048A call sub_73 ; (9FBE)
F000:9B34 loc_401: ; xref F000:9AF7, 9B2F
F000:9B34 58 pop ax
F000:9B35 3C FD cmp al,0FDh
F000:9B37 74 04 je short loc_402 ; Jump if equal
F000:9B39 3C FF cmp al,0FFh
F000:9B3B 75 06 jne short loc_403 ; Jump if not equal
F000:9B3D loc_402: ; xref F000:9B37
F000:9B3D E8 03ED call sub_71 ; (9F2D)
F000:9B40 E9 0340 jmp loc_470 ; (9E83)
F000:9B43 loc_403: ; xref F000:9B3B
F000:9B43 F6 06 0096 C0 test keybd_flags_3,0C0h ; (0040:0096=10h)
F000:9B48 74 36 jz short loc_407 ; Jump if zero
F000:9B4A 79 10 jns short loc_404 ; Jump if not sign
F000:9B4C 80 26 0096 7F and keybd_flags_3,7Fh ; (0040:0096=10h)
F000:9B51 3C AB cmp al,0ABh
F000:9B53 75 28 jne short loc_406 ; Jump if not equal
F000:9B55 80 0E 0096 40 or keybd_flags_3,40h ; (0040:0096=10h) '@'
F000:9B5A EB 21 jmp short loc_406 ; (9B7D)
F000:9B5C loc_404: ; xref F000:9B4A
F000:9B5C 80 26 0096 BF and keybd_flags_3,0BFh ; (0040:0096=10h)
F000:9B61 3C 54 cmp al,54h ; 'T'
F000:9B63 74 13 je short loc_405 ; Jump if equal
F000:9B65 3C 41 cmp al,41h ; 'A'
F000:9B67 75 14 jne short loc_406 ; Jump if not equal
F000:9B69 F6 06 0096 20 test keybd_flags_3,20h ; (0040:0096=10h) ' '
F000:9B6E 74 08 jz short loc_405 ; Jump if zero
F000:9B70 80 0E 0017 20 or keybd_flags_1,20h ; (0040:0017=80h) ' '
F000:9B75 E8 0446 call sub_73 ; (9FBE)
F000:9B78 loc_405: ; xref F000:9B63, 9B6E
F000:9B78 80 0E 0096 10 or keybd_flags_3,10h ; (0040:0096=10h)
F000:9B7D loc_406: ; xref F000:9B12, 9B1D, 9B28, 9B53
; 9B5A, 9B67, 9BAA, 9BB4
F000:9B7D E9 00A1 jmp loc_419 ; (9C21)
F000:9B80 loc_407: ; xref F000:9B48
F000:9B80 3C E1 cmp al,0E1h
F000:9B82 75 07 jne short loc_408 ; Jump if not equal
F000:9B84 80 0E 0096 11 or keybd_flags_3,11h ; (0040:0096=10h)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 89
F000:9B89 EB 09 jmp short loc_409 ; (9B94)
F000:9B8B loc_408: ; xref F000:9B82
F000:9B8B 3C E0 cmp al,0E0h
F000:9B8D 75 08 jne short loc_410 ; Jump if not equal
F000:9B8F 80 0E 0096 12 or keybd_flags_3,12h ; (0040:0096=10h)
F000:9B94 loc_409: ; xref F000:9B89
F000:9B94 E9 008D jmp loc_420 ; (9C24)
F000:9B97 loc_410: ; xref F000:9B8D
F000:9B97 A8 80 test al,80h
F000:9B99 75 03 jnz short loc_411 ; Jump if not zero
F000:9B9B E9 0089 jmp loc_421 ; (9C27)
F000:9B9E loc_411: ; xref F000:9B99
F000:9B9E 24 7F and al,7Fh
F000:9BA0 E8 04D3 call sub_81 ; (A076)
F000:9BA3 74 07 jz short loc_412 ; Jump if zero
F000:9BA5 E8 0342 call sub_66 ; (9EEA)
F000:9BA8 74 7A jz short loc_420 ; Jump if zero
F000:9BAA EB D1 jmp short loc_406 ; (9B7D)
F000:9BAC loc_412: ; xref F000:9BA3
F000:9BAC E8 04C1 call sub_80 ; (A070)
F000:9BAF 74 05 jz short loc_413 ; Jump if zero
F000:9BB1 E8 0342 call sub_67 ; (9EF6)
F000:9BB4 74 C7 jz loc_406 ; Jump if zero
F000:9BB6 loc_413: ; xref F000:9BAF
F000:9BB6 E8 0320 call sub_65 ; (9ED9)
F000:9BB9 74 06 jz short loc_414 ; Jump if zero
F000:9BBB B4 80 mov ah,80h
F000:9BBD 3C 52 cmp al,52h ; 'R'
F000:9BBF 75 08 jne short loc_415 ; Jump if not equal
F000:9BC1 loc_414: ; xref F000:9BB9
F000:9BC1 F6 D4 not ah
F000:9BC3 20 26 0018 and keybd_flags_2,ah ; (0040:0018=0)
F000:9BC7 EB 58 jmp short loc_419 ; (9C21)
F000:9BC9 loc_415: ; xref F000:9BBF
F000:9BC9 3C 54 cmp al,54h ; 'T'
F000:9BCB 75 0B jne short loc_416 ; Jump if not equal
F000:9BCD 80 26 0018 FB and keybd_flags_2,0FBh ; (0040:0018=0)
F000:9BD2 B8 8501 mov ax,8501h
F000:9BD5 E9 00B0 jmp loc_426 ; (9C88)
F000:9BD8 loc_416: ; xref F000:9BCB
F000:9BD8 E8 030F call sub_66 ; (9EEA)
F000:9BDB 75 44 jnz short loc_419 ; Jump if not zero
F000:9BDD F6 D4 not ah
F000:9BDF 20 26 0017 and keybd_flags_1,ah ; (0040:0017=80h)
F000:9BE3 50 push ax
F000:9BE4 E8 030F call sub_67 ; (9EF6)
F000:9BE7 58 pop ax
F000:9BE8 74 37 jz short loc_419 ; Jump if zero
F000:9BEA E8 0483 call sub_80 ; (A070)
F000:9BED 86 C4 xchg al,ah
F000:9BEF 74 06 jz short loc_417 ; Jump if zero
F000:9BF1 20 06 0096 and keybd_flags_3,al ; (0040:0096=10h)
F000:9BF5 EB 07 jmp short loc_418 ; (9BFE)
F000:9BF7 loc_417: ; xref F000:9BEF
F000:9BF7 C0 F8 02 sar al,2 ; Shift w/sign fill
F000:9BFA 20 06 0018 and keybd_flags_2,al ; (0040:0018=0)
F000:9BFE loc_418: ; xref F000:9BF5
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 90
F000:9BFE A0 0018 mov al,keybd_flags_2 ; (0040:0018=0)
F000:9C01 C0 E0 02 shl al,2 ; Shift w/zeros fill
F000:9C04 0A 06 0096 or al,keybd_flags_3 ; (0040:0096=10h)
F000:9C08 24 0C and al,0Ch
F000:9C0A 08 06 0017 or keybd_flags_1,al ; (0040:0017=80h)
F000:9C0E 86 C4 xchg al,ah
F000:9C10 3C 38 cmp al,38h ; '8'
F000:9C12 75 0D jne short loc_419 ; Jump if not equal
F000:9C14 33 C0 xor ax,ax ; Zero register
F000:9C16 86 06 0019 xchg al,keybd_alt_num ; (0040:0019=0)
F000:9C1A 22 C0 and al,al
F000:9C1C 74 03 jz short loc_419 ; Jump if zero
F000:9C1E E9 035B jmp loc_489 ; (9F7C)
F000:9C21 loc_419: ; xref F000:9B7D, 9BC7, 9BDB, 9BE8
; 9C12, 9C1C, 9C33, 9C3A
; 9C47, 9C57, 9C62, 9C6B
; 9C6F, 9C73, 9C7E
F000:9C21 E9 0255 jmp loc_468 ; (9E79)
F000:9C24 loc_420: ; xref F000:9B94, 9BA8, 9C2F
F000:9C24 E9 0257 jmp loc_469 ; (9E7E)
F000:9C27 loc_421: ; xref F000:9B9B
F000:9C27 E8 044C call sub_81 ; (A076)
F000:9C2A 74 13 jz short loc_422 ; Jump if zero
F000:9C2C E8 02BB call sub_66 ; (9EEA)
F000:9C2F 74 F3 jz loc_420 ; Jump if zero
F000:9C31 3C 45 cmp al,45h ; 'E'
F000:9C33 75 EC jne loc_419 ; Jump if not equal
F000:9C35 F6 06 0018 08 test keybd_flags_2,8 ; (0040:0018=0)
F000:9C3A 75 E5 jnz loc_419 ; Jump if not zero
F000:9C3C E9 0102 jmp loc_443 ; (9D41)
F000:9C3F loc_422: ; xref F000:9C2A
F000:9C3F E8 042E call sub_80 ; (A070)
F000:9C42 74 05 jz short loc_423 ; Jump if zero
F000:9C44 E8 02AF call sub_67 ; (9EF6)
F000:9C47 74 D8 jz loc_419 ; Jump if zero
F000:9C49 loc_423: ; xref F000:9C42
F000:9C49 E8 029E call sub_66 ; (9EEA)
F000:9C4C 75 1F jnz short loc_425 ; Jump if not zero
F000:9C4E 08 26 0017 or keybd_flags_1,ah ; (0040:0017=80h)
F000:9C52 50 push ax
F000:9C53 E8 02A0 call sub_67 ; (9EF6)
F000:9C56 58 pop ax
F000:9C57 74 C8 jz loc_419 ; Jump if zero
F000:9C59 E8 0414 call sub_80 ; (A070)
F000:9C5C 74 06 jz short loc_424 ; Jump if zero
F000:9C5E 08 26 0096 or keybd_flags_3,ah ; (0040:0096=10h)
F000:9C62 EB BD jmp short loc_419 ; (9C21)
F000:9C64 loc_424: ; xref F000:9C5C
F000:9C64 C0 EC 02 shr ah,2 ; Shift w/zeros fill
F000:9C67 08 26 0018 or keybd_flags_2,ah ; (0040:0018=0)
F000:9C6B EB B4 jmp short loc_419 ; (9C21)
F000:9C6D loc_425: ; xref F000:9C4C
F000:9C6D 22 C0 and al,al
F000:9C6F 74 B0 jz loc_419 ; Jump if zero
F000:9C71 3C 58 cmp al,58h ; 'X'
F000:9C73 77 AC ja loc_419 ; Jump if above
F000:9C75 3C 54 cmp al,54h ; 'T'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 91
F000:9C77 75 1D jne short loc_427 ; Jump if not equal
F000:9C79 F6 06 0018 04 test keybd_flags_2,4 ; (0040:0018=0)
F000:9C7E 75 A1 jnz loc_419 ; Jump if not zero
F000:9C80 80 0E 0018 04 or keybd_flags_2,4 ; (0040:0018=0)
F000:9C85 B8 8500 mov ax,8500h
F000:9C88 loc_426: ; xref F000:9BD5
F000:9C88 50 push ax
F000:9C89 B0 20 mov al,20h ; ' '
F000:9C8B E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:9C8D E8 0271 call sub_68 ; (9F01)
F000:9C90 58 pop ax
F000:9C91 CD 15 int 15h ; General services, ah=func 85h
; get system request key state
F000:9C93 E9 01F0 jmp loc_471 ; (9E86)
F000:9C96 loc_427: ; xref F000:9C77
F000:9C96 F6 06 0017 08 test keybd_flags_1,8 ; (0040:0017=80h)
F000:9C9B 74 0C jz short loc_428 ; Jump if zero
F000:9C9D E8 03CA call sub_79 ; (A06A)
F000:9CA0 74 0A jz short loc_429 ; Jump if zero
F000:9CA2 F6 06 0018 04 test keybd_flags_2,4 ; (0040:0018=0)
F000:9CA7 74 03 jz short loc_429 ; Jump if zero
F000:9CA9 loc_428: ; xref F000:9C9B
F000:9CA9 EB 79 jmp short loc_441 ; (9D24)
F000:9CAB 90 db 90h
F000:9CAC loc_429: ; xref F000:9CA0, 9CA7
F000:9CAC F6 06 0017 04 test keybd_flags_1,4 ; (0040:0017=80h)
F000:9CB1 74 12 jz short loc_431 ; Jump if zero
F000:9CB3 3C 53 cmp al,53h ; 'S'
F000:9CB5 75 09 jne short loc_430 ; Jump if not equal
F000:9CB7 C7 06 0072 1234 mov warm_boot_flag,1234h ; (0040:0072=1200h)
F000:9CBD E9 439B jmp loc_1197 ; (E05B)
F000:9CC0 loc_430: ; xref F000:9CB5
F000:9CC0 E8 4BCB call sub_234 ; (E88E)
F000:9CC3 EB 03 jmp short loc_432 ; (9CC8)
F000:9CC5 loc_431: ; xref F000:9CB1
F000:9CC5 E8 01C4 call sub_61 ; (9E8C)
F000:9CC8 loc_432: ; xref F000:9CC3
F000:9CC8 E8 01DA call sub_62 ; (9EA5)
F000:9CCB BB 9900 mov bx,9900h
F000:9CCE E8 01E7 call sub_63 ; (9EB8)
F000:9CD1 E8 039C call sub_80 ; (A070)
F000:9CD4 74 1D jz short loc_435 ; Jump if zero
F000:9CD6 C6 06 0019 00 mov keybd_alt_num,0 ; (0040:0019=0)
F000:9CDB 80 FC 1C cmp ah,1Ch
F000:9CDE 75 04 jne short loc_433 ; Jump if not equal
F000:9CE0 B0 A6 mov al,0A6h
F000:9CE2 EB 39 jmp short loc_438 ; (9D1D)
F000:9CE4 loc_433: ; xref F000:9CDE
F000:9CE4 80 FC 35 cmp ah,35h ; '5'
F000:9CE7 75 04 jne short loc_434 ; Jump if not equal
F000:9CE9 B0 A4 mov al,0A4h
F000:9CEB EB 30 jmp short loc_438 ; (9D1D)
F000:9CED loc_434: ; xref F000:9CE7
F000:9CED 8A C4 mov al,ah
F000:9CEF 04 50 add al,50h ; 'P'
F000:9CF1 EB 2A jmp short loc_438 ; (9D1D)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 92
F000:9CF3 loc_435: ; xref F000:9CD4
F000:9CF3 3C 0A cmp al,0Ah
F000:9CF5 73 13 jae short loc_437 ; Jump if above or =
F000:9CF7 8A 26 0019 mov ah,keybd_alt_num ; (0040:0019=0)
F000:9CFB D0 E4 shl ah,1 ; Shift w/zeros fill
F000:9CFD 02 C4 add al,ah
F000:9CFF C0 E4 02 shl ah,2 ; Shift w/zeros fill
F000:9D02 02 C4 add al,ah
F000:9D04 A2 0019 mov keybd_alt_num,al ; (0040:0019=0)
F000:9D07 loc_436: ; xref F000:9D12, 9D3F, 9D74
F000:9D07 E9 016F jmp loc_468 ; (9E79)
F000:9D0A loc_437: ; xref F000:9CF5
F000:9D0A C6 06 0019 00 mov keybd_alt_num,0 ; (0040:0019=0)
F000:9D0F 80 FC 53 cmp ah,53h ; 'S'
F000:9D12 74 F3 je loc_436 ; Jump if equal
F000:9D14 80 FC 39 cmp ah,39h ; '9'
F000:9D17 74 08 je short loc_440 ; Jump if equal
F000:9D19 3C F0 cmp al,0F0h
F000:9D1B 74 04 je short loc_440 ; Jump if equal
F000:9D1D loc_438: ; xref F000:9CE2, 9CEB, 9CF1, 9D9E
F000:9D1D B4 00 mov ah,0
F000:9D1F loc_439: ; xref F000:9DC5
F000:9D1F 86 C4 xchg al,ah
F000:9D21 loc_440: ; xref F000:9D17, 9D1B, 9D8B
F000:9D21 E9 0258 jmp loc_489 ; (9F7C)
F000:9D24 loc_441: ; xref F000:9CA9
F000:9D24 F6 06 0017 04 test keybd_flags_1,4 ; (0040:0017=80h)
F000:9D29 75 03 jnz short loc_442 ; Jump if not zero
F000:9D2B E9 009A jmp loc_454 ; (9DC8)
F000:9D2E loc_442: ; xref F000:9D29
F000:9D2E E8 0174 call sub_62 ; (9EA5)
F000:9D31 BB 9980 mov bx,9980h
F000:9D34 E8 0181 call sub_63 ; (9EB8)
F000:9D37 80 FC 45 cmp ah,45h ; 'E'
F000:9D3A 75 2B jne short loc_445 ; Jump if not equal
F000:9D3C E8 032B call sub_79 ; (A06A)
F000:9D3F 75 C6 jnz loc_436 ; Jump if not zero
F000:9D41 loc_443: ; xref F000:9C3C
F000:9D41 80 0E 0018 08 or keybd_flags_2,8 ; (0040:0018=0)
F000:9D46 E8 01B8 call sub_68 ; (9F01)
F000:9D49 B0 20 mov al,20h ; ' '
F000:9D4B E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:9D4D 80 3E 0049 07 cmp video_mode,7 ; (0040:0049=3)
F000:9D52 74 09 je short loc_444 ; Jump if equal
F000:9D54 A0 0065 mov al,video_mode_reg ; (0040:0065=29h)
F000:9D57 52 push dx
F000:9D58 BA 03D8 mov dx,3D8h
F000:9D5B EE out dx,al ; port 3D8h, CGA video control
F000:9D5C 5A pop dx
F000:9D5D loc_444: ; xref F000:9D52, 9D62
F000:9D5D F6 06 0018 08 test keybd_flags_2,8 ; (0040:0018=0)
F000:9D62 75 F9 jnz loc_444 ; Jump if not zero
F000:9D64 E9 011C jmp loc_470 ; (9E83)
F000:9D67 loc_445: ; xref F000:9D3A
F000:9D67 80 FC 46 cmp ah,46h ; 'F'
F000:9D6A 75 21 jne short loc_449 ; Jump if not equal
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 93
F000:9D6C E8 02FB call sub_79 ; (A06A)
F000:9D6F 74 05 jz short loc_447 ; Jump if zero
F000:9D71 E8 02FC call sub_80 ; (A070)
F000:9D74 loc_446: ; xref F000:9DB3
F000:9D74 74 91 jz loc_436 ; Jump if zero
F000:9D76 loc_447: ; xref F000:9D6F
F000:9D76 A1 0080 mov ax,@keybd_begin ; (0040:0080=1Eh)
F000:9D79 A3 001A mov keybd_q_head,ax ; (0040:001A=24h)
F000:9D7C A3 001C mov keybd_q_tail,ax ; (0040:001C=24h)
F000:9D7F C6 06 0071 80 mov keybd_break,80h ; (0040:0071=0)
F000:9D84 E8 017A call sub_68 ; (9F01)
F000:9D87 CD 1B int 1Bh ; Keyboard break (cntrl-break)
F000:9D89 33 C0 xor ax,ax ; Zero register
F000:9D8B loc_448: ; xref F000:9DAE, 9DB5, 9DC3
F000:9D8B EB 94 jmp short loc_440 ; (9D21)
F000:9D8D loc_449: ; xref F000:9D6A
F000:9D8D 80 FC 37 cmp ah,37h ; '7'
F000:9D90 75 0F jne short loc_452 ; Jump if not equal
F000:9D92 E8 02D5 call sub_79 ; (A06A)
F000:9D95 74 05 jz short loc_450 ; Jump if zero
F000:9D97 E8 02D6 call sub_80 ; (A070)
F000:9D9A 74 02 jz short loc_451 ; Jump if zero
F000:9D9C loc_450: ; xref F000:9D95
F000:9D9C B0 72 mov al,72h ; 'r'
F000:9D9E loc_451: ; xref F000:9D9A, 9DA9, 9DB7, 9DBC
F000:9D9E E9 FF7C jmp loc_438 ; (9D1D)
F000:9DA1 loc_452: ; xref F000:9D90
F000:9DA1 E8 02CC call sub_80 ; (A070)
F000:9DA4 75 13 jnz short loc_453 ; Jump if not zero
F000:9DA6 80 FC 0F cmp ah,0Fh
F000:9DA9 74 F3 je loc_451 ; Jump if equal
F000:9DAB 80 FC 39 cmp ah,39h ; '9'
F000:9DAE 74 DB je loc_448 ; Jump if equal
F000:9DB0 80 FC 35 cmp ah,35h ; '5'
F000:9DB3 74 BF je loc_446 ; Jump if equal
F000:9DB5 72 D4 jc loc_448 ; Jump if carry Set
F000:9DB7 EB E5 jmp short loc_451 ; (9D9E)
F000:9DB9 loc_453: ; xref F000:9DA4
F000:9DB9 80 FC 35 cmp ah,35h ; '5'
F000:9DBC 74 E0 je loc_451 ; Jump if equal
F000:9DBE 80 FC 1C cmp ah,1Ch
F000:9DC1 B4 E0 mov ah,0E0h
F000:9DC3 74 C6 jz loc_448 ; Jump if zero
F000:9DC5 E9 FF57 jmp loc_439 ; (9D1F)
F000:9DC8 loc_454: ; xref F000:9D2B
F000:9DC8 E8 00C1 call sub_61 ; (9E8C)
F000:9DCB 3C 52 cmp al,52h ; 'R'
F000:9DCD 74 03 je short loc_455 ; Jump if equal
F000:9DCF E8 00D3 call sub_62 ; (9EA5)
F000:9DD2 loc_455: ; xref F000:9DCD
F000:9DD2 3C 37 cmp al,37h ; '7'
F000:9DD4 75 26 jne short loc_458 ; Jump if not equal
F000:9DD6 E8 0291 call sub_79 ; (A06A)
F000:9DD9 74 07 jz short loc_456 ; Jump if zero
F000:9DDB E8 0292 call sub_80 ; (A070)
F000:9DDE 74 1C jz short loc_458 ; Jump if zero
F000:9DE0 EB 07 jmp short loc_457 ; (9DE9)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 94
F000:9DE2 loc_456: ; xref F000:9DD9
F000:9DE2 F6 06 0017 03 test keybd_flags_1,3 ; (0040:0017=80h)
F000:9DE7 74 13 jz short loc_458 ; Jump if zero
F000:9DE9 loc_457: ; xref F000:9DE0
F000:9DE9 E8 0115 call sub_68 ; (9F01)
F000:9DEC B0 20 mov al,20h ; ' '
F000:9DEE E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:9DF0 55 push bp
F000:9DF1 CD 05 int 5 ; Print screen (status at 50:0h)
F000:9DF3 5D pop bp
F000:9DF4 80 26 0096 FC and keybd_flags_3,0FCh ; (0040:0096=10h)
F000:9DF9 E9 0087 jmp loc_470 ; (9E83)
F000:9DFC loc_458: ; xref F000:9DD4, 9DDE, 9DE7
F000:9DFC E8 0271 call sub_80 ; (A070)
F000:9DFF 75 09 jnz short loc_459 ; Jump if not zero
F000:9E01 F6 06 0017 03 test keybd_flags_1,3 ; (0040:0017=80h)
F000:9E06 74 34 jz short loc_464 ; Jump if zero
F000:9E08 EB 18 jmp short loc_463 ; (9E22)
F000:9E0A loc_459: ; xref F000:9DFF
F000:9E0A 3C 1C cmp al,1Ch
F000:9E0C 75 05 jne short loc_460 ; Jump if not equal
F000:9E0E B8 E00D mov ax,0E00Dh
F000:9E11 EB 07 jmp short loc_461 ; (9E1A)
F000:9E13 loc_460: ; xref F000:9E0C
F000:9E13 3C 35 cmp al,35h ; '5'
F000:9E15 75 06 jne short loc_462 ; Jump if not equal
F000:9E17 B8 E02F mov ax,0E02Fh
F000:9E1A loc_461: ; xref F000:9E11
F000:9E1A E9 015F jmp loc_489 ; (9F7C)
F000:9E1D loc_462: ; xref F000:9E15
F000:9E1D BB 9A80 mov bx,9A80h
F000:9E20 EB 31 jmp short loc_465 ; (9E53)
F000:9E22 loc_463: ; xref F000:9E08
F000:9E22 BB 9A00 mov bx,9A00h
F000:9E25 F6 06 0017 20 test keybd_flags_1,20h ; (0040:0017=80h) ' '
F000:9E2A 74 2A jz short loc_466 ; Jump if zero
F000:9E2C E8 0094 call sub_64 ; (9EC3)
F000:9E2F 3C 46 cmp al,46h ; 'F'
F000:9E31 76 23 jbe short loc_466 ; Jump if below or =
F000:9E33 3C 56 cmp al,56h ; 'V'
F000:9E35 73 1F jae short loc_466 ; Jump if above or =
F000:9E37 BB 9A80 mov bx,9A80h
F000:9E3A EB 1A jmp short loc_466 ; (9E56)
F000:9E3C loc_464: ; xref F000:9E06
F000:9E3C BB 9A80 mov bx,9A80h
F000:9E3F F6 06 0017 20 test keybd_flags_1,20h ; (0040:0017=80h) ' '
F000:9E44 74 0D jz short loc_465 ; Jump if zero
F000:9E46 3C 46 cmp al,46h ; 'F'
F000:9E48 76 0C jbe short loc_466 ; Jump if below or =
F000:9E4A 3C 56 cmp al,56h ; 'V'
F000:9E4C 73 08 jae short loc_466 ; Jump if above or =
F000:9E4E BB 9A00 mov bx,9A00h
F000:9E51 EB 03 jmp short loc_466 ; (9E56)
F000:9E53 loc_465: ; xref F000:9E20, 9E44
F000:9E53 E8 006D call sub_64 ; (9EC3)
F000:9E56 loc_466: ; xref F000:9E2A, 9E31, 9E35, 9E3A
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 95
; 9E48, 9E4C, 9E51
F000:9E56 E8 005F call sub_63 ; (9EB8)
F000:9E59 80 FC 3A cmp ah,3Ah ; ':'
F000:9E5C 76 18 jbe short loc_467 ; Jump if below or =
F000:9E5E 3C 3A cmp al,3Ah ; ':'
F000:9E60 76 14 jbe short loc_467 ; Jump if below or =
F000:9E62 3C F0 cmp al,0F0h
F000:9E64 74 10 je short loc_467 ; Jump if equal
F000:9E66 80 FC 56 cmp ah,56h ; 'V'
F000:9E69 74 0B je short loc_467 ; Jump if equal
F000:9E6B 8A E0 mov ah,al
F000:9E6D B0 00 mov al,0
F000:9E6F E8 01FE call sub_80 ; (A070)
F000:9E72 74 02 jz short loc_467 ; Jump if zero
F000:9E74 B0 E0 mov al,0E0h
F000:9E76 loc_467: ; xref F000:9E5C, 9E60, 9E64, 9E69
; 9E72
F000:9E76 E9 00DF jmp loc_487 ; (9F58)
F000:9E79 loc_468: ; xref F000:9C21, 9D07, 9EA2, 9EB5
; 9EC0, 9ECC
F000:9E79 80 26 0096 FC and keybd_flags_3,0FCh ; (0040:0096=10h)
F000:9E7E loc_469: ; xref F000:9C24
F000:9E7E FA cli ; Disable interrupts
F000:9E7F B0 20 mov al,20h ; ' '
F000:9E81 E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:9E83 loc_470: ; xref F000:9B40, 9D64, 9DF9, 9F8D
F000:9E83 E8 007B call sub_68 ; (9F01)
F000:9E86 loc_471: ; xref F000:9C93, 9FA9
F000:9E86 FA cli ; Disable interrupts
F000:9E87 8B E5 mov sp,bp
F000:9E89 1F pop ds
F000:9E8A 61 popa ; Restore all regs
F000:9E8B CF iret ; Interrupt return
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9CC5, 9DC8
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_61 proc near
F000:9E8C E8 004A call sub_65 ; (9ED9)
F000:9E8F 75 13 jnz short loc_ret_473 ; Jump if not zero
F000:9E91 84 26 0018 test ah,keybd_flags_2 ; (0040:0018=0)
F000:9E95 75 0B jnz short loc_472 ; Jump if not zero
F000:9E97 08 26 0018 or keybd_flags_2,ah ; (0040:0018=0)
F000:9E9B 30 26 0017 xor keybd_flags_1,ah ; (0040:0017=80h)
F000:9E9F E8 011C call sub_73 ; (9FBE)
F000:9EA2 loc_472: ; xref F000:9E95
F000:9EA2 EB D5 jmp short loc_468 ; (9E79)
F000:9EA4 loc_ret_473: ; xref F000:9E8F
F000:9EA4 C3 retn
sub_61 endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 96
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9CC8, 9D2E, 9DCF
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_62 proc near
F000:9EA5 F6 06 0018 08 test keybd_flags_2,8 ; (0040:0018=0)
F000:9EAA 74 0B jz short loc_ret_475 ; Jump if zero
F000:9EAC 3C 45 cmp al,45h ; 'E'
F000:9EAE 74 05 je short loc_474 ; Jump if equal
F000:9EB0 80 26 0018 F7 and keybd_flags_2,0F7h ; (0040:0018=0)
F000:9EB5 loc_474: ; xref F000:9EAE
F000:9EB5 EB C2 jmp short loc_468 ; (9E79)
F000:9EB7 loc_ret_475: ; xref F000:9EAA
F000:9EB7 C3 retn
sub_62 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9CCE, 9D34, 9E56
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_63 proc near
F000:9EB8 8A E0 mov ah,al
F000:9EBA FE C8 dec al
F000:9EBC 2E: D7 xlat cs:[bx] ; al=[al+[bx]] table
F000:9EBE 3C FF cmp al,0FFh
F000:9EC0 74 B7 je loc_468 ; Jump if equal
F000:9EC2 C3 retn
sub_63 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9E2C, 9E53
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_64 proc near
F000:9EC3 3C 52 cmp al,52h ; 'R'
F000:9EC5 75 11 jne short loc_ret_476 ; Jump if not equal
F000:9EC7 F6 06 0018 80 test keybd_flags_2,80h ; (0040:0018=0)
F000:9ECC 75 AB jnz loc_468 ; Jump if not zero
F000:9ECE 80 0E 0018 80 or keybd_flags_2,80h ; (0040:0018=0)
F000:9ED3 80 36 0017 80 xor keybd_flags_1,80h ; (0040:0017=80h)
F000:9ED8 loc_ret_476: ; xref F000:9EC5
F000:9ED8 C3 retn
sub_64 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 97
;
; Called from: F000:9BB6, 9E8C
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_65 proc near
F000:9ED9 B4 40 mov ah,40h ; '@'
F000:9EDB 3C 3A cmp al,3Ah ; ':'
F000:9EDD 74 0A je short loc_ret_477 ; Jump if equal
F000:9EDF B4 20 mov ah,20h ; ' '
F000:9EE1 3C 45 cmp al,45h ; 'E'
F000:9EE3 74 04 je short loc_ret_477 ; Jump if equal
F000:9EE5 B4 10 mov ah,10h
F000:9EE7 3C 46 cmp al,46h ; 'F'
F000:9EE9 loc_ret_477: ; xref F000:9EDD, 9EE3
F000:9EE9 C3 retn
sub_65 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9BA5, 9BD8, 9C2C, 9C49
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_66 proc near
F000:9EEA B4 08 mov ah,8
F000:9EEC 3C 38 cmp al,38h ; '8'
F000:9EEE 74 10 je short loc_ret_478 ; Jump if equal
F000:9EF0 B4 04 mov ah,4
F000:9EF2 3C 1D cmp al,1Dh
F000:9EF4 74 0A je short loc_ret_478 ; Jump if equal
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:9BB1, 9BE4, 9C44, 9C53
sub_67:
F000:9EF6 B4 02 mov ah,2
F000:9EF8 3C 2A cmp al,2Ah ; '*'
F000:9EFA 74 04 je short loc_ret_478 ; Jump if equal
F000:9EFC B4 01 mov ah,1
F000:9EFE 3C 36 cmp al,36h ; '6'
F000:9F00 loc_ret_478: ; xref F000:9EEE, 9EF4, 9EFA
F000:9F00 C3 retn
sub_66 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9C8D, 9D46, 9D84, 9DE9, 9E83, 9F9C, A0ED
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_68 proc near
F000:9F01 E8 0013 call sub_70 ; (9F17)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 98
F000:9F04 B0 AE mov al,0AEh
F000:9F06 E6 64 out 64h,al ; port 64h, kybd cntrlr functn
; al = 0AEh, enable keyboard
F000:9F08 FB sti ; Enable interrupts
F000:9F09 C3 retn
sub_68 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9B09, A0DF
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_69 proc near
F000:9F0A E8 000A call sub_70 ; (9F17)
F000:9F0D B0 AD mov al,0ADh
F000:9F0F E6 64 out 64h,al ; port 64h, kybd cntrlr functn
; al = 0ADh, disable keyboard
F000:9F11 E8 0003 call sub_70 ; (9F17)
F000:9F14 E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:9F16 C3 retn
sub_69 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9F01, 9F0A, 9F11, A007, E8D6
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_70 proc near
F000:9F17 FA cli ; Disable interrupts
F000:9F18 33 C9 xor cx,cx ; Zero register
F000:9F1A locloop_479: ; xref F000:9F20
F000:9F1A EB 00 jmp short loc_480 ; (9F1C)
F000:9F1C loc_480: ; xref F000:9F1A
F000:9F1C E4 64 in al,64h ; port 64h, keyboard status
F000:9F1E A8 02 test al,2
F000:9F20 E0 F8 loopnz locloop_479 ; Loop if zf=0, cx>0
F000:9F22 74 08 jz short loc_ret_483 ; Jump if zero
F000:9F24 locloop_481: ; xref F000:9F2A
F000:9F24 EB 00 jmp short loc_482 ; (9F26)
F000:9F26 loc_482: ; xref F000:9F24
F000:9F26 E4 64 in al,64h ; port 64h, keyboard status
F000:9F28 A8 02 test al,2
F000:9F2A E0 F8 loopnz locloop_481 ; Loop if zf=0, cx>0
F000:9F2C loc_ret_483: ; xref F000:9F22
F000:9F2C C3 retn
sub_70 endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 99
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9B3D, 9F8A
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_71 proc near
F000:9F2D B0 20 mov al,20h ; ' '
F000:9F2F E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:9F31 BB 00D0 mov bx,0D0h
F000:9F34 B9 0030 mov cx,30h
F000:9F37 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:9F39 8A E0 mov ah,al
F000:9F3B 24 FE and al,0FEh
F000:9F3D EB 00 jmp short locloop_484 ; (9F3F)
F000:9F3F locloop_484: ; xref F000:9F3D, 9F51
F000:9F3F 51 push cx
F000:9F40 0C 02 or al,2
F000:9F42 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:9F44 8B CB mov cx,bx
F000:9F46 locloop_485: ; xref F000:9F46
F000:9F46 E2 FE loop locloop_485 ; Loop if cx > 0
F000:9F48 24 FD and al,0FDh
F000:9F4A E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:9F4C 8B CB mov cx,bx
F000:9F4E locloop_486: ; xref F000:9F4E
F000:9F4E E2 FE loop locloop_486 ; Loop if cx > 0
F000:9F50 59 pop cx
F000:9F51 E2 EC loop locloop_484 ; Loop if cx > 0
F000:9F53 8A C4 mov al,ah
F000:9F55 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:9F57 C3 retn
sub_71 endp
F000:9F58 loc_487: ; xref F000:9E76
F000:9F58 F6 06 0017 40 test keybd_flags_1,40h ; (0040:0017=80h) '@'
F000:9F5D 74 1D jz short loc_489 ; Jump if zero
F000:9F5F F6 06 0017 03 test keybd_flags_1,3 ; (0040:0017=80h)
F000:9F64 75 0C jnz short loc_488 ; Jump if not zero
F000:9F66 3C 7A cmp al,7Ah ; 'z'
F000:9F68 77 12 ja short loc_489 ; Jump if above
F000:9F6A 3C 61 cmp al,61h ; 'a'
F000:9F6C 72 0E jb short loc_489 ; Jump if below
F000:9F6E 2C 20 sub al,20h ; ' '
F000:9F70 EB 0A jmp short loc_489 ; (9F7C)
F000:9F72 loc_488: ; xref F000:9F64
F000:9F72 3C 5A cmp al,5Ah ; 'Z'
F000:9F74 77 06 ja short loc_489 ; Jump if above
F000:9F76 3C 41 cmp al,41h ; 'A'
F000:9F78 72 02 jb short loc_489 ; Jump if below
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 100
F000:9F7A 04 20 add al,20h ; ' '
F000:9F7C loc_489: ; xref F000:9C1E, 9D21, 9E1A, 9F5D
; 9F68, 9F6C, 9F70, 9F74
; 9F78
F000:9F7C 8B 1E 001C mov bx,keybd_q_tail ; (0040:001C=24h)
F000:9F80 53 push bx
F000:9F81 E8 00B3 call sub_76 ; (A037)
F000:9F84 3B 1E 001A cmp bx,keybd_q_head ; (0040:001A=24h)
F000:9F88 75 06 jne short loc_490 ; Jump if not equal
F000:9F8A E8 FFA0 call sub_71 ; (9F2D)
F000:9F8D E9 FEF3 jmp loc_470 ; (9E83)
F000:9F90 loc_490: ; xref F000:9F88
F000:9F90 FA cli ; Disable interrupts
F000:9F91 89 1E 001C mov keybd_q_tail,bx ; (0040:001C=24h)
F000:9F95 5B pop bx
F000:9F96 89 07 mov [bx],ax
F000:9F98 B0 20 mov al,20h ; ' '
F000:9F9A E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:9F9C E8 FF62 call sub_68 ; (9F01)
F000:9F9F B8 9102 mov ax,9102h
F000:9FA2 CD 15 int 15h ; General services, ah=func 91h
; interrupt complete, al=type
F000:9FA4 80 26 0096 FC and keybd_flags_3,0FCh ; (0040:0096=10h)
F000:9FA9 E9 FEDA jmp loc_471 ; (9E86)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9B2C, 9FD9, A056
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_72 proc near
F000:9FAC A0 0017 mov al,keybd_flags_1 ; (0040:0017=80h)
F000:9FAF C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:9FB2 24 07 and al,7
F000:9FB4 8A E0 mov ah,al
F000:9FB6 32 26 0097 xor ah,keybd_flags_4 ; (0040:0097=10h)
F000:9FBA 80 E4 07 and ah,7
F000:9FBD C3 retn
sub_72 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9B31, 9B75, 9E9F
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_73 proc near
F000:9FBE FA cli ; Disable interrupts
F000:9FBF F6 06 0097 40 test keybd_flags_4,40h ; (0040:0097=10h) '@'
F000:9FC4 75 0C jnz short loc_491 ; Jump if not zero
F000:9FC6 80 0E 0097 40 or keybd_flags_4,40h ; (0040:0097=10h) '@'
F000:9FCB B0 20 mov al,20h ; ' '
F000:9FCD E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 101
F000:9FCF E8 0002 call sub_74 ; (9FD4)
F000:9FD2 loc_491: ; xref F000:9FC4
F000:9FD2 FB sti ; Enable interrupts
F000:9FD3 C3 retn
sub_73 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9FCF, A051
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_74 proc near
F000:9FD4 B0 ED mov al,0EDh
F000:9FD6 E8 0028 call sub_75 ; (A001)
F000:9FD9 E8 FFD0 call sub_72 ; (9FAC)
F000:9FDC 80 26 0097 F8 and keybd_flags_4,0F8h ; (0040:0097=10h)
F000:9FE1 08 06 0097 or keybd_flags_4,al ; (0040:0097=10h)
F000:9FE5 F6 06 0097 80 test keybd_flags_4,80h ; (0040:0097=10h)
F000:9FEA 75 0A jnz short loc_492 ; Jump if not zero
F000:9FEC E8 0012 call sub_75 ; (A001)
F000:9FEF F6 06 0097 80 test keybd_flags_4,80h ; (0040:0097=10h)
F000:9FF4 74 05 jz short loc_493 ; Jump if zero
F000:9FF6 loc_492: ; xref F000:9FEA
F000:9FF6 B0 F4 mov al,0F4h
F000:9FF8 E8 0006 call sub_75 ; (A001)
F000:9FFB loc_493: ; xref F000:9FF4
F000:9FFB 80 26 0097 3F and keybd_flags_4,3Fh ; (0040:0097=10h) '?'
F000:A000 C3 retn
sub_74 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:96E2, 9FD6, 9FEC, 9FF8, A0E5, A0EA, A0F3
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_75 proc near
F000:A001 8A E0 mov ah,al
F000:A003 B9 0003 mov cx,3
F000:A006 locloop_494: ; xref F000:A02D
F000:A006 51 push cx
F000:A007 E8 FF0D call sub_70 ; (9F17)
F000:A00A 8A C4 mov al,ah
F000:A00C E6 60 out 60h,al ; port 60h, keybd data write
F000:A00E 80 26 0097 4F and byte ptr ds:data_60e,4Fh ; (C000:0097=51h) 'O'
F000:A013 FB sti ; Enable interrupts
F000:A014 33 C9 xor cx,cx ; Zero register
F000:A016 locloop_495: ; xref F000:A01D
F000:A016 F6 06 0097 30 test byte ptr ds:data_60e,30h ; (C000:0097=51h) '0'
F000:A01B 75 09 jnz short loc_497 ; Jump if not zero
F000:A01D E2 F7 loop locloop_495 ; Loop if cx > 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 102
F000:A01F locloop_496: ; xref F000:A024
F000:A01F F6 06 0097 30 test byte ptr ds:data_60e,30h ; (C000:0097=51h) '0'
F000:A024 E1 F9 loopz locloop_496 ; Loop if zf=1, cx>0
F000:A026 loc_497: ; xref F000:A01B
F000:A026 FA cli ; Disable interrupts
F000:A027 59 pop cx
F000:A028 F6 06 0097 10 test byte ptr ds:data_60e,10h ; (C000:0097=51h)
F000:A02D E1 D7 loopz locloop_494 ; Loop if zf=1, cx>0
F000:A02F 75 05 jnz short loc_ret_498 ; Jump if not zero
F000:A031 80 0E 0097 80 or byte ptr ds:data_60e,80h ; (C000:0097=51h)
F000:A036 loc_ret_498: ; xref F000:A02F
F000:A036 C3 retn
sub_75 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9F81, A0B4, A159
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_76 proc near
F000:A037 43 inc bx
F000:A038 43 inc bx
F000:A039 3B 1E 0082 cmp bx,@keybd_end ; (0040:0082=3Eh)
F000:A03D 75 04 jne short loc_ret_499 ; Jump if not equal
F000:A03F 8B 1E 0080 mov bx,@keybd_begin ; (0040:0080=1Eh)
F000:A043 loc_ret_499: ; xref F000:A03D
F000:A043 C3 retn
sub_76 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A05B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_77 proc near
F000:A044 FA cli ; Disable interrupts
F000:A045 F6 06 0097 40 test keybd_flags_4,40h ; (0040:0097=10h) '@'
F000:A04A 75 08 jnz short loc_500 ; Jump if not zero
F000:A04C 80 0E 0097 40 or keybd_flags_4,40h ; (0040:0097=10h) '@'
F000:A051 E8 FF80 call sub_74 ; (9FD4)
F000:A054 loc_500: ; xref F000:A04A
F000:A054 FB sti ; Enable interrupts
F000:A055 C3 retn
sub_77 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 103
;
; Called from: F000:A125, A135, A154
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_78 proc near
F000:A056 E8 FF53 call sub_72 ; (9FAC)
F000:A059 74 03 jz short loc_501 ; Jump if zero
F000:A05B E8 FFE6 call sub_77 ; (A044)
F000:A05E loc_501: ; xref F000:A059
F000:A05E FA cli ; Disable interrupts
F000:A05F 8B 1E 001A mov bx,keybd_q_head ; (0040:001A=24h)
F000:A063 3B 1E 001C cmp bx,keybd_q_tail ; (0040:001C=24h)
F000:A067 8B 07 mov ax,[bx]
F000:A069 C3 retn
sub_78 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9C9D, 9D3C, 9D6C, 9D92, 9DD6
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_79 proc near
F000:A06A F6 06 0096 10 test keybd_flags_3,10h ; (0040:0096=10h)
F000:A06F C3 retn
sub_79 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9BAC, 9BEA, 9C3F, 9C59, 9CD1, 9D71, 9D97
; 9DA1, 9DDB, 9DFC, 9E6F
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_80 proc near
F000:A070 F6 06 0096 02 test keybd_flags_3,2 ; (0040:0096=10h)
F000:A075 C3 retn
sub_80 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9BA0, 9C27
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_81 proc near
F000:A076 F6 06 0096 01 test keybd_flags_3,1 ; (0040:0096=10h)
F000:A07B C3 retn
sub_81 endp
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 16h ▒▒▒▒▒
;
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 104
; KEYBOARD SERVICES
;
; Call with: ah = sub-function number
;
; Functions:
; ah = 0 Get a key, and wait until one is available if none are
; in the queue.
; Returns: ah = keyboard scan code
; al = ASCII character, or 0 if non-ASCII
; ah = 1 Get key status
; Returns: zero flag = 0 if a valid key is in the queue
; ah = keyboard scan code
; al = ASCII character, or 0 if non-ASCII
; zero flag = 1 if no keys in the queue
; ah = 2 Get shift status register
; Returns: al = bits 7 6 5 4 3 2 1 0
; right left ctrl alt scrl num cap insrt
; -------shifts------ ------toggles-------
; 1 = down 1 = on
; ah = 3 Set repeating character rate (not supported in all systems)
; Call with: al = 5
; bh = start delay, 0 = 250 ms 2 = 750 ms
; 1 = 500 ms 3 = 1000 ms
; bl = speed in characters per second - values
; range from 0 = 30 cps, to 1Fh = 2 cps
; ah = 5 Load keyboard queue (not supported in all systems)
; Call with: ch/cl = scan code/character to load into the queue
; Returns: al = 0 if ok, 1 if keyboard queue is full
;
; **** Support for extended keyboard functions ****
; ah = 10h Get a key (similar to ah = 0, not supported in all systems)
; ah = 11h Get key status (similar to ah = 1, not supported in all systems)
; ah = 12h Get shift info (similar to ah = 2, not supported in all systems)
F000:A07C int_16h_keybd proc near ; xref F000:E82E
F000:A07C FB sti ; Enable interrupts
F000:A07D 1E push ds
F000:A07E 53 push bx
F000:A07F 51 push cx
F000:A080 6A 40 push 40h
F000:A082 1F pop ds
F000:A083 80 EC 03 sub ah,3
F000:A086 74 44 jz short loc_506 ; Jump if zero
F000:A088 72 14 jc short loc_502 ; Jump if carry Set
F000:A08A 80 EC 02 sub ah,2
F000:A08D 74 1F jz short loc_504 ; Jump if zero
F000:A08F 80 EC 0B sub ah,0Bh
F000:A092 74 7F jz short loc_510 ; Jump if zero
F000:A094 FE CC dec ah
F000:A096 74 60 jz short loc_507 ; Jump if zero
F000:A098 FE CC dec ah
F000:A09A 74 5E jz short loc_508 ; Jump if zero
F000:A09C EB 0C jmp short loc_503 ; (A0AA)
F000:A09E loc_502: ; xref F000:A088
F000:A09E FE C4 inc ah
F000:A0A0 74 6C jz short loc_509 ; Jump if zero
F000:A0A2 FE C4 inc ah
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 105
F000:A0A4 74 7F jz short loc_512 ; Jump if zero
F000:A0A6 FE C4 inc ah
F000:A0A8 EB 71 jmp short loc_511 ; (A11B)
F000:A0AA loc_503: ; xref F000:A09C, A0CA, A0CF, A0D4
; A0D8, A0F6, A111, A119
; A123
F000:A0AA 59 pop cx
F000:A0AB 5B pop bx
F000:A0AC 1F pop ds
F000:A0AD CF iret ; Interrupt return
int_16h_keybd endp
F000:A0AE loc_504: ; xref F000:A08D
F000:A0AE FA cli ; Disable interrupts
F000:A0AF 8B 1E 001C mov bx,keybd_q_tail ; (0040:001C=24h)
F000:A0B3 53 push bx
F000:A0B4 E8 FF80 call sub_76 ; (A037)
F000:A0B7 3B 1E 001A cmp bx,keybd_q_head ; (0040:001A=24h)
F000:A0BB B0 01 mov al,1
F000:A0BD 74 0A jz short loc_505 ; Jump if zero
F000:A0BF 89 1E 001C mov keybd_q_tail,bx ; (0040:001C=24h)
F000:A0C3 5B pop bx
F000:A0C4 89 0F mov [bx],cx
F000:A0C6 53 push bx
F000:A0C7 B0 00 mov al,0
F000:A0C9 loc_505: ; xref F000:A0BD
F000:A0C9 5B pop bx
F000:A0CA EB DE jmp short loc_503 ; (A0AA)
F000:A0CC loc_506: ; xref F000:A086
F000:A0CC 80 FB 1F cmp bl,1Fh
F000:A0CF 77 D9 ja loc_503 ; Jump if above
F000:A0D1 80 FF 03 cmp bh,3
F000:A0D4 77 D4 ja loc_503 ; Jump if above
F000:A0D6 3C 05 cmp al,5
F000:A0D8 75 D0 jne loc_503 ; Jump if not equal
F000:A0DA C0 CF 03 ror bh,3 ; Rotate
F000:A0DD 0A DF or bl,bh
F000:A0DF E8 FE28 call sub_69 ; (9F0A)
F000:A0E2 FB sti ; Enable interrupts
F000:A0E3 B0 F3 mov al,0F3h
F000:A0E5 E8 FF19 call sub_75 ; (A001)
F000:A0E8 8A C3 mov al,bl
F000:A0EA E8 FF14 call sub_75 ; (A001)
F000:A0ED E8 FE11 call sub_68 ; (9F01)
F000:A0F0 FB sti ; Enable interrupts
F000:A0F1 B0 F4 mov al,0F4h
F000:A0F3 E8 FF0B call sub_75 ; (A001)
F000:A0F6 EB B2 jmp short loc_503 ; (A0AA)
F000:A0F8 loc_507: ; xref F000:A096
F000:A0F8 EB 3B jmp short loc_513 ; (A135)
F000:A0FA loc_508: ; xref F000:A09A
F000:A0FA A0 0018 mov al,keybd_flags_2 ; (0040:0018=0)
F000:A0FD 8A E0 mov ah,al
F000:A0FF 25 7304 and ax,7304h
F000:A102 C0 C8 03 ror al,3 ; Rotate
F000:A105 0A E0 or ah,al
F000:A107 A0 0096 mov al,keybd_flags_3 ; (0040:0096=10h)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 106
F000:A10A 24 0C and al,0Ch
F000:A10C 0A E0 or ah,al
F000:A10E loc_509: ; xref F000:A0A0
F000:A10E A0 0017 mov al,keybd_flags_1 ; (0040:0017=80h)
F000:A111 EB 97 jmp short loc_503 ; (A0AA)
F000:A113 loc_510: ; xref F000:A092
F000:A113 E8 002E call sub_82 ; (A144)
F000:A116 E8 0049 call sub_83 ; (A162)
F000:A119 EB 8F jmp short loc_503 ; (A0AA)
F000:A11B loc_511: ; xref F000:A0A8, A121
F000:A11B E8 0026 call sub_82 ; (A144)
F000:A11E E8 004F call sub_84 ; (A170)
F000:A121 74 F8 jz loc_511 ; Jump if zero
F000:A123 EB 85 jmp short loc_503 ; (A0AA)
F000:A125 loc_512: ; xref F000:A0A4, A133
F000:A125 E8 FF2E call sub_78 ; (A056)
F000:A128 FB sti ; Enable interrupts
F000:A129 74 13 jz short loc_514 ; Jump if zero
F000:A12B E8 0042 call sub_84 ; (A170)
F000:A12E 75 0E jnz short loc_514 ; Jump if not zero
F000:A130 E8 0011 call sub_82 ; (A144)
F000:A133 EB F0 jmp short loc_512 ; (A125)
F000:A135 loc_513: ; xref F000:A0F8
F000:A135 E8 FF1E call sub_78 ; (A056)
F000:A138 FB sti ; Enable interrupts
F000:A139 74 03 jz short loc_514 ; Jump if zero
F000:A13B E8 0024 call sub_83 ; (A162)
F000:A13E loc_514: ; xref F000:A129, A12E, A139
F000:A13E 59 pop cx
F000:A13F 5B pop bx
F000:A140 1F pop ds
F000:A141 CA 0002 retf 2 ; Return far
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A113, A11B, A130
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_82 proc near
F000:A144 8B 1E 001A mov bx,keybd_q_head ; (0040:001A=24h)
F000:A148 3B 1E 001C cmp bx,keybd_q_tail ; (0040:001C=24h)
F000:A14C 75 05 jne short loc_515 ; Jump if not equal
F000:A14E B8 9002 mov ax,9002h
F000:A151 CD 15 int 15h ; General services, ah=func 90h
; device busy, al=type
F000:A153 loc_515: ; xref F000:A14C, A157
F000:A153 FB sti ; Enable interrupts
F000:A154 E8 FEFF call sub_78 ; (A056)
F000:A157 74 FA jz loc_515 ; Jump if zero
F000:A159 E8 FEDB call sub_76 ; (A037)
F000:A15C 89 1E 001A mov keybd_q_head,bx ; (0040:001A=24h)
F000:A160 FB sti ; Enable interrupts
F000:A161 C3 retn
sub_82 endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 107
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A116, A13B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_83 proc near
F000:A162 3D 00F0 cmp ax,0F0h
F000:A165 74 06 je short loc_516 ; Jump if equal
F000:A167 3C F0 cmp al,0F0h
F000:A169 75 02 jne short loc_516 ; Jump if not equal
F000:A16B B0 00 mov al,0
F000:A16D loc_516: ; xref F000:A165, A169
F000:A16D 0B E4 or sp,sp ; Zero ?
F000:A16F C3 retn
sub_83 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A11E, A12B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_84 proc near
F000:A170 80 FC 84 cmp ah,84h
F000:A173 76 13 jbe short loc_517 ; Jump if below or =
F000:A175 80 FC E0 cmp ah,0E0h
F000:A178 75 25 jne short loc_519 ; Jump if not equal
F000:A17A B4 1C mov ah,1Ch
F000:A17C 3C 0A cmp al,0Ah
F000:A17E 74 1C je short loc_518 ; Jump if equal
F000:A180 3C 0D cmp al,0Dh
F000:A182 74 18 je short loc_518 ; Jump if equal
F000:A184 B4 35 mov ah,35h ; '5'
F000:A186 EB 14 jmp short loc_518 ; (A19C)
F000:A188 loc_517: ; xref F000:A173
F000:A188 3D 00E0 cmp ax,0E0h
F000:A18B 74 0F je short loc_518 ; Jump if equal
F000:A18D 3D 00F0 cmp ax,0F0h
F000:A190 74 0A je short loc_518 ; Jump if equal
F000:A192 3C F0 cmp al,0F0h
F000:A194 74 09 je short loc_519 ; Jump if equal
F000:A196 3C E0 cmp al,0E0h
F000:A198 75 02 jne short loc_518 ; Jump if not equal
F000:A19A B0 00 mov al,0
F000:A19C loc_518: ; xref F000:A17E, A182, A186, A18B
; A190, A198
F000:A19C 0B E4 or sp,sp ; Zero ?
F000:A19E C3 retn
F000:A19F loc_519: ; xref F000:A178, A194
F000:A19F 3B E4 cmp sp,sp
F000:A1A1 C3 retn
sub_84 endp
F000:A1A2 90 80 FA 80 FB FC db 90h, 80h, 0FAh, 80h, 0FBh, 0FCh
F000:A1A8 72 52 0A E4 75 04 db 72h, 52h, 0Ah, 0E4h, 75h, 4
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 108
F000:A1AE CD 40 32 E4 50 51 db 0CDh, 40h, 32h, 0E4h, 50h, 51h
F000:A1B4 52 53 56 57 1E 06 db 52h, 53h, 56h, 57h, 1Eh, 6
F000:A1BA 83 EC 08 55 8B EC db 83h, 0ECh, 8, 55h, 8Bh, 0ECh
F000:A1C0 6A 40 1F 50 8A C4 db 6Ah, 40h, 1Fh, 50h, 8Ah, 0C4h
F000:A1C6 98 8B F8 3C 19 58 db 98h, 8Bh, 0F8h, 3Ch, 19h, 58h
F000:A1CC 77 24 D1 E7 2E FF db 77h, 24h, 0D1h, 0E7h, 2Eh, 0FFh
F000:A1D2 95 01 A2 db 95h, 1, 0A2h
F000:A1D5 loc_520: ; xref F000:A1FA
F000:A1D5 89 46 18 mov [bp+18h],ax
F000:A1D8 B8 0201 mov ax,201h
F000:A1DB 72 05 jc short loc_521 ; Jump if carry Set
F000:A1DD 80 66 1E FE and byte ptr [bp+1Eh],0FEh
F000:A1E1 48 dec ax
F000:A1E2 loc_521: ; xref F000:A1DB
F000:A1E2 09 46 1E or [bp+1Eh],ax
F000:A1E5 5D pop bp
F000:A1E6 83 C4 08 add sp,8
F000:A1E9 07 pop es
F000:A1EA 1F pop ds
F000:A1EB 5F pop di
F000:A1EC 5E pop si
F000:A1ED 5B pop bx
F000:A1EE 5A pop dx
F000:A1EF 59 pop cx
F000:A1F0 58 pop ax
F000:A1F1 CF iret ; Interrupt return
F000:A1F2 loc_522:
F000:A1F2 B8 0100 mov ax,100h
F000:A1F5 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A1F9 F9 stc ; Set carry flag
F000:A1FA EB D9 jmp short loc_520 ; (A1D5)
F000:A1FC CD 40 CA 02 00 db 0CDh, 40h, 0CAh, 2, 0
F000:A201 A23E data_93 dw offset sub_86 ; Data table (indexed access) (A23E)
F000:A203 A2B3 data_94 dw offset sub_90 ; (A2B3)
F000:A205 A2BE data_95 dw offset sub_91 ; (A2BE)
F000:A207 A2CE data_96 dw offset sub_92 ; (A2CE)
F000:A209 A2DE data_97 dw offset sub_93 ; (A2DE)
F000:A20B A2FF data_98 dw offset sub_94 ; (A2FF)
F000:A20D A235 data_99 dw offset sub_85 ; (A235)
F000:A20F A235 data_100 dw offset sub_85 ; (A235)
F000:A211 A24B data_101 dw offset sub_88 ; (A24B)
F000:A213 A3D0 data_102 dw offset sub_96 ; (A3D0)
F000:A215 A40B data_103 dw offset sub_97 ; (A40B)
F000:A217 A41A data_104 dw offset sub_98 ; (A41A)
F000:A219 A504 data_105 dw offset sub_99 ; (A504)
F000:A21B A245 data_106 dw offset sub_87 ; (A245)
F000:A21D A235 data_107 dw offset sub_85 ; (A235)
F000:A21F A235 data_108 dw offset sub_85 ; (A235)
F000:A221 A563 data_109 dw offset sub_100 ; (A563)
F000:A223 A591 data_110 dw offset sub_101 ; (A591)
F000:A225 A235 data_111 dw offset sub_85 ; (A235)
F000:A227 A235 data_112 dw offset sub_85 ; (A235)
F000:A229 A5BB data_113 dw offset sub_102 ; (A5BB)
F000:A22B A250 data_114 dw offset sub_89 ; (A250)
F000:A22D A235 data_115 dw offset sub_85 ; (A235)
F000:A22F A235 data_116 dw offset sub_85 ; (A235)
F000:A231 A235 data_117 dw offset sub_85 ; (A235)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 109
F000:A233 A60B data_118 dw offset sub_104 ; (A60B)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A20D, A20F, A21D, A21F, A225, A227, A22D
; A22F, A231
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_85 proc near
F000:A235 B8 0100 mov ax,100h
F000:A238 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A23C F9 stc ; Set carry flag
F000:A23D C3 retn
sub_85 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A201
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_86 proc near
F000:A23E 80 FA 81 cmp dl,81h
F000:A241 77 07 ja short loc_ret_524 ; Jump if above
F000:A243 loc_523: ; xref F000:A248
F000:A243 EB 15 jmp short loc_526 ; (A25A)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:A21B
sub_87:
F000:A245 E8 0412 call sub_107 ; (A65A)
F000:A248 73 F9 jnc loc_523 ; Jump if carry=0
F000:A24A loc_ret_524: ; xref F000:A241
F000:A24A C3 retn
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:A211
sub_88:
F000:A24B E8 013C call sub_95 ; (A38A)
F000:A24E EB 03 jmp short loc_525 ; (A253)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:A22B
sub_89:
F000:A250 E8 038F call sub_103 ; (A5E2)
F000:A253 loc_525: ; xref F000:A24E
F000:A253 89 56 14 mov [bp+14h],dx
F000:A256 89 4E 16 mov [bp+16h],cx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 110
F000:A259 C3 retn
F000:A25A loc_526: ; xref F000:A243
F000:A25A C6 06 008E 00 mov hdsk_int_flags,0 ; (0040:008E=0)
F000:A25F BA 03F6 mov dx,3F6h
F000:A262 B0 04 mov al,4
F000:A264 EE out dx,al ; port 3F6h, hdsk0 register
; al = 4, reset controller
F000:A265 B9 0024 mov cx,24h
F000:A268 E8 4DFD call sub_264 ; (F068)
F000:A26B B0 00 mov al,0
F000:A26D EE out dx,al ; port 3F6h, hdsk0 register
F000:A26E E8 044C call sub_109 ; (A6BD)
F000:A271 72 3F jc short loc_ret_531 ; Jump if carry Set
F000:A273 BA 01F1 mov dx,1F1h
F000:A276 EC in al,dx ; port 1F1h, hdsk0-error regstr
F000:A277 88 26 008D mov hdsk_error,ah ; (0040:008D=0)
F000:A27B 3C 01 cmp al,1
F000:A27D 74 05 je short loc_527 ; Jump if equal
F000:A27F B4 05 mov ah,5
F000:A281 F9 stc ; Set carry flag
F000:A282 EB 2A jmp short loc_530 ; (A2AE)
F000:A284 loc_527: ; xref F000:A27D
F000:A284 B2 80 mov dl,80h
F000:A286 BF 0022 mov di,22h
F000:A289 E8 0305 call sub_101 ; (A591)
F000:A28C 80 3E 0075 02 cmp hdsk_count,2 ; (0040:0075=1)
F000:A291 72 05 jb short loc_528 ; Jump if below
F000:A293 B2 81 mov dl,81h
F000:A295 E8 02F9 call sub_101 ; (A591)
F000:A298 loc_528: ; xref F000:A291
F000:A298 B2 80 mov dl,80h
F000:A29A BF 0012 mov di,12h
F000:A29D E8 0130 call sub_96 ; (A3D0)
F000:A2A0 80 3E 0075 02 cmp hdsk_count,2 ; (0040:0075=1)
F000:A2A5 72 05 jb short loc_529 ; Jump if below
F000:A2A7 B2 81 mov dl,81h
F000:A2A9 E8 0124 call sub_96 ; (A3D0)
F000:A2AC loc_529: ; xref F000:A2A5
F000:A2AC 32 E4 xor ah,ah ; Zero register
F000:A2AE loc_530: ; xref F000:A282
F000:A2AE 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A2B2 loc_ret_531: ; xref F000:A271
F000:A2B2 C3 retn
sub_86 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A203
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_90 proc near
F000:A2B3 A0 0074 mov al,hdsk_status_1 ; (0040:0074=0)
F000:A2B6 B4 00 mov ah,0
F000:A2B8 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 111
F000:A2BC F8 clc ; Clear carry flag
F000:A2BD C3 retn
sub_90 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A205
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_91 proc near
F000:A2BE C7 46 18 0200 mov word ptr [bp+18h],200h
F000:A2C3 E8 0536 call sub_115 ; (A7FC)
F000:A2C6 72 05 jc short loc_ret_532 ; Jump if carry Set
F000:A2C8 B4 20 mov ah,20h ; ' '
F000:A2CA E9 015C jmp loc_554 ; (A429)
F000:A2CD loc_ret_532: ; xref F000:A2C6
F000:A2CD C3 retn
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:A207
sub_92:
F000:A2CE C7 46 18 0200 mov word ptr [bp+18h],200h
F000:A2D3 E8 0526 call sub_115 ; (A7FC)
F000:A2D6 72 05 jc short loc_ret_533 ; Jump if carry Set
F000:A2D8 B4 30 mov ah,30h ; '0'
F000:A2DA E9 01B9 jmp loc_565 ; (A496)
F000:A2DD loc_ret_533: ; xref F000:A2D6
F000:A2DD C3 retn
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:A209
sub_93:
F000:A2DE E8 0379 call sub_107 ; (A65A)
F000:A2E1 72 1B jc short loc_ret_534 ; Jump if carry Set
F000:A2E3 E8 03FF call sub_110 ; (A6E5)
F000:A2E6 72 16 jc short loc_ret_534 ; Jump if carry Set
F000:A2E8 E8 053D call sub_116 ; (A828)
F000:A2EB E8 055C call sub_117 ; (A84A)
F000:A2EE E8 03C0 call sub_108 ; (A6B1)
F000:A2F1 B0 40 mov al,40h ; '@'
F000:A2F3 E8 04D8 call sub_114 ; (A7CE)
F000:A2F6 E8 042B call sub_111 ; (A724)
F000:A2F9 72 03 jc short loc_ret_534 ; Jump if carry Set
F000:A2FB E8 046E call sub_113 ; (A76C)
F000:A2FE loc_ret_534: ; xref F000:A2E1, A2E6, A2F9
F000:A2FE C3 retn
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 112
;
; Called from: F000:A20B
sub_94:
F000:A2FF E8 0358 call sub_107 ; (A65A)
F000:A302 72 05 jc short loc_535 ; Jump if carry Set
F000:A304 E8 03DE call sub_110 ; (A6E5)
F000:A307 73 03 jnc short loc_536 ; Jump if carry=0
F000:A309 loc_535: ; xref F000:A302
F000:A309 EB 7E jmp short loc_ret_545 ; (A389)
F000:A30B 90 db 90h
F000:A30C loc_536: ; xref F000:A307
F000:A30C 8C C7 mov di,es
F000:A30E 8B F3 mov si,bx
F000:A310 E8 0326 call sub_105 ; (A639)
F000:A313 E8 0512 call sub_116 ; (A828)
F000:A316 E8 0398 call sub_108 ; (A6B1)
F000:A319 26: 8A 47 0E mov al,es:[bx+0Eh]
F000:A31D 88 46 03 mov [bp+3],al
F000:A320 BA 01F2 mov dx,1F2h
F000:A323 EE out dx,al ; port 1F2h, hdsk0-sector count
F000:A324 EB 00 jmp short loc_537 ; (A326)
F000:A326 loc_537: ; xref F000:A324
F000:A326 EB 00 jmp short loc_538 ; (A328)
F000:A328 loc_538: ; xref F000:A326
F000:A328 8A 46 05 mov al,[bp+5]
F000:A32B 24 3F and al,3Fh ; '?'
F000:A32D BA 01F3 mov dx,1F3h
F000:A330 EE out dx,al ; port 1F3h, hdsk0-sector numbr
F000:A331 EB 00 jmp short loc_539 ; (A333)
F000:A333 loc_539: ; xref F000:A331
F000:A333 EB 00 jmp short loc_540 ; (A335)
F000:A335 loc_540: ; xref F000:A333
F000:A335 8A 46 07 mov al,[bp+7]
F000:A338 BA 01F6 mov dx,1F6h
F000:A33B EE out dx,al ; port 1F6h, hdsk0-siz/drv/head
F000:A33C EB 00 jmp short loc_541 ; (A33E)
F000:A33E loc_541: ; xref F000:A33C
F000:A33E EB 00 jmp short loc_542 ; (A340)
F000:A340 loc_542: ; xref F000:A33E
F000:A340 8A C5 mov al,ch
F000:A342 88 46 05 mov [bp+5],al
F000:A345 BA 01F4 mov dx,1F4h
F000:A348 EE out dx,al ; port 1F4h, hdsk0-cylr,lo byte
F000:A349 EB 00 jmp short loc_543 ; (A34B)
F000:A34B loc_543: ; xref F000:A349
F000:A34B EB 00 jmp short loc_544 ; (A34D)
F000:A34D loc_544: ; xref F000:A34B
F000:A34D 8A C1 mov al,cl
F000:A34F C0 E8 06 shr al,6 ; Shift w/zeros fill
F000:A352 8A D0 mov dl,al
F000:A354 8A 46 15 mov al,[bp+15h]
F000:A357 C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:A35A 24 0C and al,0Ch
F000:A35C 0A C2 or al,dl
F000:A35E 88 46 06 mov [bp+6],al
F000:A361 BA 01F5 mov dx,1F5h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 113
F000:A364 EE out dx,al ; port 1F5h, hdsk0-cylr,hi byte
F000:A365 B0 50 mov al,50h ; 'P'
F000:A367 E8 0464 call sub_114 ; (A7CE)
F000:A36A E8 03DE call sub_112 ; (A74B)
F000:A36D 72 1A jc short loc_ret_545 ; Jump if carry Set
F000:A36F 8C D8 mov ax,ds
F000:A371 97 xchg ax,di
F000:A372 8E D8 mov ds,ax
F000:A374 B9 0100 mov cx,100h
F000:A377 BA 01F0 mov dx,1F0h
F000:A37A FA cli ; Disable interrupts
F000:A37B FC cld ; Clear direction
F000:A37C F3/ 6F rep outsw ; Rep when cx >0 Out [si] to port dx
F000:A37E FB sti ; Enable interrupts
F000:A37F 8E DF mov ds,di
F000:A381 E8 03A0 call sub_111 ; (A724)
F000:A384 72 03 jc short loc_ret_545 ; Jump if carry Set
F000:A386 E8 03E3 call sub_113 ; (A76C)
F000:A389 loc_ret_545: ; xref F000:A309, A36D, A384
F000:A389 C3 retn
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:A24B
sub_95:
F000:A38A E8 02AC call sub_105 ; (A639)
F000:A38D 73 09 jnc short loc_546 ; Jump if carry=0
F000:A38F B4 07 mov ah,7
F000:A391 33 C9 xor cx,cx ; Zero register
F000:A393 33 D2 xor dx,dx ; Zero register
F000:A395 F9 stc ; Set carry flag
F000:A396 EB 33 jmp short loc_548 ; (A3CB)
F000:A398 loc_546: ; xref F000:A38D
F000:A398 26: 8A 77 02 mov dh,es:[bx+2]
F000:A39C FE CE dec dh
F000:A39E 26: 8B 07 mov ax,es:[bx]
F000:A3A1 2D 0002 sub ax,2
F000:A3A4 3D 03FF cmp ax,3FFh
F000:A3A7 76 03 jbe short loc_547 ; Jump if below or =
F000:A3A9 B8 03FF mov ax,3FFh
F000:A3AC loc_547: ; xref F000:A3A7
F000:A3AC 8A D4 mov dl,ah
F000:A3AE 8A E8 mov ch,al
F000:A3B0 C0 E4 06 shl ah,6 ; Shift w/zeros fill
F000:A3B3 8A CC mov cl,ah
F000:A3B5 8A E2 mov ah,dl
F000:A3B7 C0 E4 04 shl ah,4 ; Shift w/zeros fill
F000:A3BA 80 E4 C0 and ah,0C0h
F000:A3BD 0A F4 or dh,ah
F000:A3BF 26: 8A 47 0E mov al,es:[bx+0Eh]
F000:A3C3 0A C8 or cl,al
F000:A3C5 8A 16 0075 mov dl,hdsk_count ; (0040:0075=1)
F000:A3C9 B4 00 mov ah,0
F000:A3CB loc_548: ; xref F000:A396
F000:A3CB 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 114
F000:A3CF C3 retn
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:A213, A29D, A2A9
sub_96:
F000:A3D0 E8 0287 call sub_107 ; (A65A)
F000:A3D3 72 35 jc short loc_ret_551 ; Jump if carry Set
F000:A3D5 E8 0261 call sub_105 ; (A639)
F000:A3D8 72 30 jc short loc_ret_551 ; Jump if carry Set
F000:A3DA E8 0308 call sub_110 ; (A6E5)
F000:A3DD 72 2B jc short loc_ret_551 ; Jump if carry Set
F000:A3DF E8 0446 call sub_116 ; (A828)
F000:A3E2 26: 8A 47 0E mov al,es:[bx+0Eh]
F000:A3E6 8A E2 mov ah,dl
F000:A3E8 BA 01F2 mov dx,1F2h
F000:A3EB 88 46 03 mov [bp+3],al
F000:A3EE EE out dx,al ; port 1F2h, hdsk0-sector count
F000:A3EF EB 00 jmp short loc_549 ; (A3F1)
F000:A3F1 loc_549: ; xref F000:A3EF
F000:A3F1 EB 00 jmp short loc_550 ; (A3F3)
F000:A3F3 loc_550: ; xref F000:A3F1
F000:A3F3 BA 01F6 mov dx,1F6h
F000:A3F6 8A 46 07 mov al,[bp+7]
F000:A3F9 EE out dx,al ; port 1F6h, hdsk0-siz/drv/head
F000:A3FA B0 91 mov al,91h
F000:A3FC E8 02B2 call sub_108 ; (A6B1)
F000:A3FF E8 03CC call sub_114 ; (A7CE)
F000:A402 E8 031F call sub_111 ; (A724)
F000:A405 72 03 jc short loc_ret_551 ; Jump if carry Set
F000:A407 E8 0362 call sub_113 ; (A76C)
F000:A40A loc_ret_551: ; xref F000:A3D3, A3D8, A3DD, A405
F000:A40A C3 retn
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:A215
sub_97:
F000:A40B C7 46 18 0204 mov word ptr [bp+18h],204h
F000:A410 E8 03E9 call sub_115 ; (A7FC)
F000:A413 72 04 jc short loc_ret_552 ; Jump if carry Set
F000:A415 B4 22 mov ah,22h ; '"'
F000:A417 EB 10 jmp short loc_554 ; (A429)
F000:A419 loc_ret_552: ; xref F000:A413
F000:A419 C3 retn
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:A217
sub_98:
F000:A41A C7 46 18 0204 mov word ptr [bp+18h],204h
F000:A41F E8 03DA call sub_115 ; (A7FC)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 115
F000:A422 72 04 jc short loc_ret_553 ; Jump if carry Set
F000:A424 B4 32 mov ah,32h ; '2'
F000:A426 EB 6E jmp short loc_565 ; (A496)
F000:A428 loc_ret_553: ; xref F000:A422
F000:A428 C3 retn
F000:A429 loc_554: ; xref F000:A2CA, A417
F000:A429 E8 022E call sub_107 ; (A65A)
F000:A42C 72 67 jc short loc_ret_564 ; Jump if carry Set
F000:A42E E8 02B4 call sub_110 ; (A6E5)
F000:A431 72 62 jc short loc_ret_564 ; Jump if carry Set
F000:A433 8B FB mov di,bx
F000:A435 8C C6 mov si,es
F000:A437 E8 03EE call sub_116 ; (A828)
F000:A43A F6 06 0076 C0 test hdsk_head_ctrl,0C0h ; (0040:0076=0)
F000:A43F 74 02 jz short loc_555 ; Jump if zero
F000:A441 FE C4 inc ah
F000:A443 loc_555: ; xref F000:A43F
F000:A443 E8 0404 call sub_117 ; (A84A)
F000:A446 E8 0268 call sub_108 ; (A6B1)
F000:A449 8A C4 mov al,ah
F000:A44B E8 0380 call sub_114 ; (A7CE)
F000:A44E loc_556: ; xref F000:A48A
F000:A44E E8 02D3 call sub_111 ; (A724)
F000:A451 72 42 jc short loc_ret_564 ; Jump if carry Set
F000:A453 E8 0316 call sub_113 ; (A76C)
F000:A456 73 07 jnc short loc_557 ; Jump if carry=0
F000:A458 80 3E 0074 11 cmp hdsk_status_1,11h ; (0040:0074=0)
F000:A45D 75 2D jne short loc_563 ; Jump if not equal
F000:A45F loc_557: ; xref F000:A456
F000:A45F 8E C6 mov es,si
F000:A461 B9 0100 mov cx,100h
F000:A464 BA 01F0 mov dx,1F0h
F000:A467 FA cli ; Disable interrupts
F000:A468 FC cld ; Clear direction
F000:A469 F3/ 6D rep insw ; Rep when cx >0 Port dx to es:[di]
F000:A46B FB sti ; Enable interrupts
F000:A46C F6 46 08 02 test byte ptr [bp+8],2
F000:A470 74 15 jz short loc_562 ; Jump if zero
F000:A472 E8 02D6 call sub_112 ; (A74B)
F000:A475 72 1E jc short loc_ret_564 ; Jump if carry Set
F000:A477 B9 0004 mov cx,4
F000:A47A locloop_558: ; xref F000:A485
F000:A47A EC in al,dx ; port 1F0h, hdsk0-read data
F000:A47B 26: 88 05 mov es:[di],al
F000:A47E 47 inc di
F000:A47F EB 00 jmp short loc_559 ; (A481)
F000:A481 loc_559: ; xref F000:A47F
F000:A481 EB 00 jmp short loc_560 ; (A483)
F000:A483 loc_560: ; xref F000:A481
F000:A483 EB 00 jmp short loc_561 ; (A485)
F000:A485 loc_561: ; xref F000:A483
F000:A485 E2 F3 loop locloop_558 ; Loop if cx > 0
F000:A487 loc_562: ; xref F000:A470
F000:A487 FE 4E 03 dec byte ptr [bp+3]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 116
F000:A48A 75 C2 jnz loc_556 ; Jump if not zero
F000:A48C loc_563: ; xref F000:A45D
F000:A48C 8A 26 0074 mov ah,hdsk_status_1 ; (0040:0074=0)
F000:A490 0A E4 or ah,ah ; Zero ?
F000:A492 74 01 jz short loc_ret_564 ; Jump if zero
F000:A494 F9 stc ; Set carry flag
F000:A495 loc_ret_564: ; xref F000:A42C, A431, A451, A475
; A492
F000:A495 C3 retn
F000:A496 loc_565: ; xref F000:A2DA, A426
F000:A496 E8 01C1 call sub_107 ; (A65A)
F000:A499 72 68 jc short loc_ret_573 ; Jump if carry Set
F000:A49B E8 0247 call sub_110 ; (A6E5)
F000:A49E 72 63 jc short loc_ret_573 ; Jump if carry Set
F000:A4A0 8C C7 mov di,es
F000:A4A2 8B F3 mov si,bx
F000:A4A4 E8 0381 call sub_116 ; (A828)
F000:A4A7 E8 018F call sub_105 ; (A639)
F000:A4AA F6 06 0076 C0 test hdsk_head_ctrl,0C0h ; (0040:0076=0)
F000:A4AF 74 02 jz short loc_566 ; Jump if zero
F000:A4B1 FE C4 inc ah
F000:A4B3 loc_566: ; xref F000:A4AF
F000:A4B3 E8 0394 call sub_117 ; (A84A)
F000:A4B6 E8 01F8 call sub_108 ; (A6B1)
F000:A4B9 8A C4 mov al,ah
F000:A4BB E8 0310 call sub_114 ; (A7CE)
F000:A4BE E8 028A call sub_112 ; (A74B)
F000:A4C1 72 40 jc short loc_ret_573 ; Jump if carry Set
F000:A4C3 loc_567: ; xref F000:A501
F000:A4C3 8E DF mov ds,di
F000:A4C5 B9 0100 mov cx,100h
F000:A4C8 BA 01F0 mov dx,1F0h
F000:A4CB FA cli ; Disable interrupts
F000:A4CC FC cld ; Clear direction
F000:A4CD F3/ 6F rep outsw ; Rep when cx >0 Out [si] to port dx
F000:A4CF FB sti ; Enable interrupts
F000:A4D0 F6 46 08 02 test byte ptr [bp+8],2
F000:A4D4 74 19 jz short loc_572 ; Jump if zero
F000:A4D6 6A 40 push 40h
F000:A4D8 1F pop ds
F000:A4D9 E8 026F call sub_112 ; (A74B)
F000:A4DC 72 25 jc short loc_ret_573 ; Jump if carry Set
F000:A4DE B9 0004 mov cx,4
F000:A4E1 8E DF mov ds,di
F000:A4E3 locloop_568: ; xref F000:A4ED
F000:A4E3 8A 04 mov al,[si]
F000:A4E5 46 inc si
F000:A4E6 EE out dx,al ; port 1F0h, hdsk0-write data
F000:A4E7 EB 00 jmp short loc_569 ; (A4E9)
F000:A4E9 loc_569: ; xref F000:A4E7
F000:A4E9 EB 00 jmp short loc_570 ; (A4EB)
F000:A4EB loc_570: ; xref F000:A4E9
F000:A4EB EB 00 jmp short loc_571 ; (A4ED)
F000:A4ED loc_571: ; xref F000:A4EB
F000:A4ED E2 F4 loop locloop_568 ; Loop if cx > 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 117
F000:A4EF loc_572: ; xref F000:A4D4
F000:A4EF 6A 40 push 40h
F000:A4F1 1F pop ds
F000:A4F2 E8 022F call sub_111 ; (A724)
F000:A4F5 72 0C jc short loc_ret_573 ; Jump if carry Set
F000:A4F7 E8 0272 call sub_113 ; (A76C)
F000:A4FA 72 07 jc short loc_ret_573 ; Jump if carry Set
F000:A4FC F6 06 008C 08 test hdsk_status_2,8 ; (0040:008C=50h)
F000:A501 75 C0 jnz loc_567 ; Jump if not zero
F000:A503 loc_ret_573: ; xref F000:A499, A49E, A4C1, A4DC
; A4F5, A4FA
F000:A503 C3 retn
sub_91 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A219, A631
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_99 proc near
F000:A504 E8 0153 call sub_107 ; (A65A)
F000:A507 72 59 jc short loc_ret_578 ; Jump if carry Set
F000:A509 E8 01D9 call sub_110 ; (A6E5)
F000:A50C 72 54 jc short loc_ret_578 ; Jump if carry Set
F000:A50E E8 0317 call sub_116 ; (A828)
F000:A511 8A C5 mov al,ch
F000:A513 8A EA mov ch,dl
F000:A515 BA 01F4 mov dx,1F4h
F000:A518 88 46 05 mov [bp+5],al
F000:A51B EE out dx,al ; port 1F4h, hdsk0-cylr,lo byte
F000:A51C EB 00 jmp short loc_574 ; (A51E)
F000:A51E loc_574: ; xref F000:A51C
F000:A51E EB 00 jmp short loc_575 ; (A520)
F000:A520 loc_575: ; xref F000:A51E
F000:A520 8A C1 mov al,cl
F000:A522 C0 E8 06 shr al,6 ; Shift w/zeros fill
F000:A525 8A 56 15 mov dl,[bp+15h]
F000:A528 C0 EA 04 shr dl,4 ; Shift w/zeros fill
F000:A52B 80 E2 0C and dl,0Ch
F000:A52E 0A C2 or al,dl
F000:A530 BA 01F5 mov dx,1F5h
F000:A533 88 46 06 mov [bp+6],al
F000:A536 EE out dx,al ; port 1F5h, hdsk0-cylr,hi byte
F000:A537 EB 00 jmp short loc_576 ; (A539)
F000:A539 loc_576: ; xref F000:A537
F000:A539 EB 00 jmp short loc_577 ; (A53B)
F000:A53B loc_577: ; xref F000:A539
F000:A53B 8A 46 07 mov al,[bp+7]
F000:A53E BA 01F6 mov dx,1F6h
F000:A541 EE out dx,al ; port 1F6h, hdsk0-siz/drv/head
F000:A542 E8 016C call sub_108 ; (A6B1)
F000:A545 B0 70 mov al,70h ; 'p'
F000:A547 E8 0284 call sub_114 ; (A7CE)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 118
F000:A54A E8 01D7 call sub_111 ; (A724)
F000:A54D 72 13 jc short loc_ret_578 ; Jump if carry Set
F000:A54F E8 021A call sub_113 ; (A76C)
F000:A552 73 0E jnc short loc_ret_578 ; Jump if carry=0
F000:A554 80 3E 0074 40 cmp hdsk_status_1,40h ; (0040:0074=0) '@'
F000:A559 F9 stc ; Set carry flag
F000:A55A 75 06 jnz short loc_ret_578 ; Jump if not zero
F000:A55C 32 E4 xor ah,ah ; Zero register
F000:A55E 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A562 loc_ret_578: ; xref F000:A507, A50C, A54D, A552
; A55A
F000:A562 C3 retn
sub_99 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A221
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_100 proc near
F000:A563 E8 00F4 call sub_107 ; (A65A)
F000:A566 72 28 jc short loc_ret_580 ; Jump if carry Set
F000:A568 E8 0152 call sub_109 ; (A6BD)
F000:A56B 72 23 jc short loc_ret_580 ; Jump if carry Set
F000:A56D BA 01F6 mov dx,1F6h
F000:A570 8A 46 07 mov al,[bp+7]
F000:A573 EE out dx,al ; port 1F6h, hdsk0-siz/drv/head
F000:A574 BA 01F7 mov dx,1F7h
F000:A577 51 push cx
F000:A578 B9 0002 mov cx,2
F000:A57B E8 4AEA call sub_264 ; (F068)
F000:A57E 59 pop cx
F000:A57F EC in al,dx ; port 1F7h, hdsk0-status reg
F000:A580 A2 008C mov hdsk_status_2,al ; (0040:008C=50h)
F000:A583 B4 00 mov ah,0
F000:A585 A8 40 test al,40h ; '@'
F000:A587 75 03 jnz short loc_579 ; Jump if not zero
F000:A589 B4 AA mov ah,0AAh
F000:A58B F9 stc ; Set carry flag
F000:A58C loc_579: ; xref F000:A587
F000:A58C 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A590 loc_ret_580: ; xref F000:A566, A56B
F000:A590 C3 retn
sub_100 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A223, A289, A295
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_101 proc near
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 119
F000:A591 E8 00C6 call sub_107 ; (A65A)
F000:A594 72 24 jc short loc_ret_582 ; Jump if carry Set
F000:A596 E8 014C call sub_110 ; (A6E5)
F000:A599 72 1F jc short loc_ret_582 ; Jump if carry Set
F000:A59B E8 028A call sub_116 ; (A828)
F000:A59E BA 01F6 mov dx,1F6h
F000:A5A1 8A 46 07 mov al,[bp+7]
F000:A5A4 EE out dx,al ; port 1F6h, hdsk0-siz/drv/head
F000:A5A5 E8 0109 call sub_108 ; (A6B1)
F000:A5A8 B0 10 mov al,10h
F000:A5AA E8 0221 call sub_114 ; (A7CE)
F000:A5AD E8 0174 call sub_111 ; (A724)
F000:A5B0 73 05 jnc short loc_581 ; Jump if carry=0
F000:A5B2 E8 016F call sub_111 ; (A724)
F000:A5B5 72 03 jc short loc_ret_582 ; Jump if carry Set
F000:A5B7 loc_581: ; xref F000:A5B0
F000:A5B7 E8 01B2 call sub_113 ; (A76C)
F000:A5BA loc_ret_582: ; xref F000:A594, A599, A5B5
F000:A5BA C3 retn
sub_101 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A229
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_102 proc near
F000:A5BB E8 026A call sub_116 ; (A828)
F000:A5BE E8 00FC call sub_109 ; (A6BD)
F000:A5C1 72 1E jc short loc_ret_584 ; Jump if carry Set
F000:A5C3 B0 90 mov al,90h
F000:A5C5 E8 0206 call sub_114 ; (A7CE)
F000:A5C8 E8 0159 call sub_111 ; (A724)
F000:A5CB 72 14 jc short loc_ret_584 ; Jump if carry Set
F000:A5CD BA 01F1 mov dx,1F1h
F000:A5D0 EC in al,dx ; port 1F1h, hdsk0-error regstr
F000:A5D1 A2 008D mov hdsk_error,al ; (0040:008D=0)
F000:A5D4 B4 20 mov ah,20h ; ' '
F000:A5D6 3C 01 cmp al,1
F000:A5D8 F9 stc ; Set carry flag
F000:A5D9 75 02 jnz short loc_583 ; Jump if not zero
F000:A5DB 32 E4 xor ah,ah ; Zero register
F000:A5DD loc_583: ; xref F000:A5D9
F000:A5DD 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A5E1 loc_ret_584: ; xref F000:A5C1, A5CB
F000:A5E1 C3 retn
sub_102 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A250
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 120
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_103 proc near
F000:A5E2 E8 0075 call sub_107 ; (A65A)
F000:A5E5 73 07 jnc short loc_585 ; Jump if carry=0
F000:A5E7 32 E4 xor ah,ah ; Zero register
F000:A5E9 33 C9 xor cx,cx ; Zero register
F000:A5EB 33 D2 xor dx,dx ; Zero register
F000:A5ED C3 retn
F000:A5EE loc_585: ; xref F000:A5E5
F000:A5EE E8 0055 call sub_106 ; (A646)
F000:A5F1 26: 8B 07 mov ax,es:[bx]
F000:A5F4 48 dec ax
F000:A5F5 26: 8A 4F 0E mov cl,es:[bx+0Eh]
F000:A5F9 B5 00 mov ch,0
F000:A5FB F7 E1 mul cx ; dx:ax = reg * ax
F000:A5FD 26: 8A 4F 02 mov cl,es:[bx+2]
F000:A601 F7 E1 mul cx ; dx:ax = reg * ax
F000:A603 8B CA mov cx,dx
F000:A605 8B D0 mov dx,ax
F000:A607 B4 03 mov ah,3
F000:A609 F8 clc ; Clear carry flag
F000:A60A C3 retn
sub_103 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A233
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_104 proc near
F000:A60B E8 002B call sub_105 ; (A639)
F000:A60E 73 07 jnc short loc_586 ; Jump if carry=0
F000:A610 B4 01 mov ah,1
F000:A612 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A616 C3 retn
F000:A617 loc_586: ; xref F000:A60E
F000:A617 8A 76 15 mov dh,[bp+15h]
F000:A61A 52 push dx
F000:A61B 26: 8B 47 0C mov ax,es:[bx+0Ch]
F000:A61F 8A E8 mov ch,al
F000:A621 8A CC mov cl,ah
F000:A623 C0 E1 06 shl cl,6 ; Shift w/zeros fill
F000:A626 8A F4 mov dh,ah
F000:A628 C0 E6 04 shl dh,4 ; Shift w/zeros fill
F000:A62B 80 E6 C0 and dh,0C0h
F000:A62E 88 76 15 mov [bp+15h],dh
F000:A631 E8 FED0 call sub_99 ; (A504)
F000:A634 5A pop dx
F000:A635 88 76 15 mov [bp+15h],dh
F000:A638 C3 retn
sub_104 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 121
; SUBROUTINE
;
; Called from: F000:A310, A38A, A3D5, A4A7, A60B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_105 proc near
F000:A639 80 FA 81 cmp dl,81h
F000:A63C 76 08 jbe short loc_587 ; Jump if below or =
F000:A63E B4 01 mov ah,1
F000:A640 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A644 F9 stc ; Set carry flag
F000:A645 C3 retn
sub_105 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A5EE, A676, A82C
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_106 proc near
F000:A646 loc_587: ; xref F000:A63C
F000:A646 33 DB xor bx,bx ; Zero register
F000:A648 8E C3 mov es,bx
F000:A64A F6 C2 01 test dl,1
F000:A64D BB 0104 mov bx,104h
F000:A650 74 03 jz short loc_588 ; Jump if zero
F000:A652 BB 0118 mov bx,118h
F000:A655 loc_588: ; xref F000:A650
F000:A655 26: C4 1F les bx,dword ptr es:[bx] ; Load 32 bit ptr
F000:A658 F8 clc ; Clear carry flag
F000:A659 C3 retn
sub_106 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A245, A2DE, A2FF, A3D0, A429, A496, A504
; A563, A591, A5E2
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_107 proc near
F000:A65A 50 push ax
F000:A65B A0 0075 mov al,hdsk_count ; (0040:0075=1)
F000:A65E 8A E2 mov ah,dl
F000:A660 80 E4 7F and ah,7Fh
F000:A663 3A C4 cmp al,ah
F000:A665 58 pop ax
F000:A666 76 41 jbe short loc_593 ; Jump if below or =
F000:A668 83 FF 2A cmp di,2Ah
F000:A66B 74 3A je short loc_592 ; Jump if equal
F000:A66D 83 FF 10 cmp di,10h
F000:A670 74 35 je short loc_592 ; Jump if equal
F000:A672 06 push es
F000:A673 53 push bx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 122
F000:A674 52 push dx
F000:A675 51 push cx
F000:A676 E8 FFCD call sub_106 ; (A646)
F000:A679 26: 8B 4F 05 mov cx,es:[bx+5]
F000:A67D C1 E9 02 shr cx,2 ; Shift w/zeros fill
F000:A680 88 4E 02 mov [bp+2],cl
F000:A683 B1 A0 mov cl,0A0h
F000:A685 F6 C2 01 test dl,1
F000:A688 74 02 jz short loc_589 ; Jump if zero
F000:A68A B1 B0 mov cl,0B0h
F000:A68C loc_589: ; xref F000:A688
F000:A68C 83 FF 12 cmp di,12h
F000:A68F 75 0A jne short loc_590 ; Jump if not equal
F000:A691 26: 8A 77 02 mov dh,es:[bx+2]
F000:A695 FE CE dec dh
F000:A697 0A CE or cl,dh
F000:A699 EB 05 jmp short loc_591 ; (A6A0)
F000:A69B loc_590: ; xref F000:A68F
F000:A69B 80 E6 0F and dh,0Fh
F000:A69E 0A CE or cl,dh
F000:A6A0 loc_591: ; xref F000:A699
F000:A6A0 88 4E 07 mov [bp+7],cl
F000:A6A3 59 pop cx
F000:A6A4 5A pop dx
F000:A6A5 5B pop bx
F000:A6A6 07 pop es
F000:A6A7 loc_592: ; xref F000:A66B, A670
F000:A6A7 F8 clc ; Clear carry flag
F000:A6A8 C3 retn
F000:A6A9 loc_593: ; xref F000:A666
F000:A6A9 B4 01 mov ah,1
F000:A6AB 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A6AF F9 stc ; Set carry flag
F000:A6B0 C3 retn
sub_107 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A2EE, A316, A3FC, A446, A4B6, A542, A5A5
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_108 proc near
F000:A6B1 52 push dx
F000:A6B2 50 push ax
F000:A6B3 8A 46 02 mov al,[bp+2]
F000:A6B6 BA 01F1 mov dx,1F1h
F000:A6B9 EE out dx,al ; port 1F1h, hdsk0-precomp cylr
F000:A6BA 58 pop ax
F000:A6BB 5A pop dx
F000:A6BC C3 retn
sub_108 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 123
;
; Called from: F000:A26E, A568, A5BE, A6EB, A7CE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_109 proc near
F000:A6BD FB sti ; Enable interrupts
F000:A6BE 51 push cx
F000:A6BF 52 push dx
F000:A6C0 50 push ax
F000:A6C1 B9 0010 mov cx,10h
F000:A6C4 BA 01F7 mov dx,1F7h
F000:A6C7 B4 80 mov ah,80h
F000:A6C9 locloop_594: ; xref F000:A6D2
F000:A6C9 51 push cx
F000:A6CA 33 C9 xor cx,cx ; Zero register
F000:A6CC E8 488B call sub_260 ; (EF5A)
F000:A6CF 59 pop cx
F000:A6D0 73 0F jnc short loc_595 ; Jump if carry=0
F000:A6D2 E2 F5 loop locloop_594 ; Loop if cx > 0
F000:A6D4 EC in al,dx ; port 1F7h, hdsk0-status reg
F000:A6D5 A2 008C mov hdsk_status_2,al ; (0040:008C=50h)
F000:A6D8 58 pop ax
F000:A6D9 B4 80 mov ah,80h
F000:A6DB 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A6DF EB 01 jmp short loc_596 ; (A6E2)
F000:A6E1 loc_595: ; xref F000:A6D0
F000:A6E1 58 pop ax
F000:A6E2 loc_596: ; xref F000:A6DF
F000:A6E2 5A pop dx
F000:A6E3 59 pop cx
F000:A6E4 C3 retn
sub_109 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A2E3, A304, A3DA, A42E, A49B, A509, A596
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_110 proc near
F000:A6E5 52 push dx
F000:A6E6 51 push cx
F000:A6E7 50 push ax
F000:A6E8 B9 0C00 mov cx,0C00h
F000:A6EB locloop_597: ; xref F000:A70F
F000:A6EB E8 FFCF call sub_109 ; (A6BD)
F000:A6EE 72 28 jc short loc_599 ; Jump if carry Set
F000:A6F0 BA 01F6 mov dx,1F6h
F000:A6F3 8A 46 07 mov al,[bp+7]
F000:A6F6 EE out dx,al ; port 1F6h, hdsk0-siz/drv/head
F000:A6F7 51 push cx
F000:A6F8 B9 0002 mov cx,2
F000:A6FB E8 496A call sub_264 ; (F068)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 124
F000:A6FE 59 pop cx
F000:A6FF BA 01F7 mov dx,1F7h
F000:A702 EC in al,dx ; port 1F7h, hdsk0-status reg
F000:A703 B4 AA mov ah,0AAh
F000:A705 A8 40 test al,40h ; '@'
F000:A707 74 06 jz short loc_598 ; Jump if zero
F000:A709 B4 40 mov ah,40h ; '@'
F000:A70B A8 10 test al,10h
F000:A70D 75 10 jnz short loc_600 ; Jump if not zero
F000:A70F loc_598: ; xref F000:A707
F000:A70F E2 DA loop locloop_597 ; Loop if cx > 0
F000:A711 A2 008C mov hdsk_status_2,al ; (0040:008C=50h)
F000:A714 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A718 loc_599: ; xref F000:A6EE
F000:A718 59 pop cx
F000:A719 8A C1 mov al,cl
F000:A71B 59 pop cx
F000:A71C 5A pop dx
F000:A71D F9 stc ; Set carry flag
F000:A71E C3 retn
F000:A71F loc_600: ; xref F000:A70D
F000:A71F 58 pop ax
F000:A720 59 pop cx
F000:A721 5A pop dx
F000:A722 F8 clc ; Clear carry flag
F000:A723 C3 retn
sub_110 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A2F6, A381, A402, A44E, A4F2, A54A, A5AD
; A5B2, A5C8
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_111 proc near
F000:A724 F8 clc ; Clear carry flag
F000:A725 B8 9000 mov ax,9000h
F000:A728 CD 15 int 15h ; General services, ah=func 90h
; device busy, al=type
F000:A72A FB sti ; Enable interrupts
F000:A72B 72 10 jc short loc_602 ; Jump if carry Set
F000:A72D BB 008E mov bx,8Eh
F000:A730 BA 0010 mov dx,10h
F000:A733 loc_601: ; xref F000:A73B
F000:A733 33 C9 xor cx,cx ; Zero register
F000:A735 E8 486A call sub_262 ; (EFA2)
F000:A738 73 0B jnc short loc_603 ; Jump if carry=0
F000:A73A 4A dec dx
F000:A73B 75 F6 jnz loc_601 ; Jump if not zero
F000:A73D loc_602: ; xref F000:A72B
F000:A73D B4 80 mov ah,80h
F000:A73F 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A743 EB 05 jmp short loc_ret_604 ; (A74A)
F000:A745 loc_603: ; xref F000:A738
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 125
F000:A745 C6 06 008E 00 mov hdsk_int_flags,0 ; (0040:008E=0)
F000:A74A loc_ret_604: ; xref F000:A743
F000:A74A C3 retn
sub_111 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A36A, A472, A4BE, A4D9
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_112 proc near
F000:A74B 51 push cx
F000:A74C 52 push dx
F000:A74D 50 push ax
F000:A74E B9 00C8 mov cx,0C8h
F000:A751 BA 01F7 mov dx,1F7h
F000:A754 B4 08 mov ah,8
F000:A756 E8 4825 call sub_261 ; (EF7E)
F000:A759 73 0D jnc short loc_605 ; Jump if carry=0
F000:A75B EC in al,dx ; port 1F7h, hdsk0-status reg
F000:A75C A2 008C mov hdsk_status_2,al ; (0040:008C=50h)
F000:A75F 58 pop ax
F000:A760 B4 80 mov ah,80h
F000:A762 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A766 EB 01 jmp short loc_606 ; (A769)
F000:A768 loc_605: ; xref F000:A759
F000:A768 58 pop ax
F000:A769 loc_606: ; xref F000:A766
F000:A769 5A pop dx
F000:A76A 59 pop cx
F000:A76B C3 retn
sub_112 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A2FB, A386, A407, A453, A4F7, A54F, A5B7
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_113 proc near
F000:A76C 52 push dx
F000:A76D 50 push ax
F000:A76E BA 01F7 mov dx,1F7h
F000:A771 EC in al,dx ; port 1F7h, hdsk0-status reg
F000:A772 A2 008C mov hdsk_status_2,al ; (0040:008C=50h)
F000:A775 B4 11 mov ah,11h
F000:A777 A8 04 test al,4
F000:A779 75 45 jnz short loc_607 ; Jump if not zero
F000:A77B B4 CC mov ah,0CCh
F000:A77D A8 20 test al,20h ; ' '
F000:A77F 75 3F jnz short loc_607 ; Jump if not zero
F000:A781 B4 AA mov ah,0AAh
F000:A783 A8 40 test al,40h ; '@'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 126
F000:A785 74 39 jz short loc_607 ; Jump if zero
F000:A787 B4 40 mov ah,40h ; '@'
F000:A789 A8 10 test al,10h
F000:A78B 74 33 jz short loc_607 ; Jump if zero
F000:A78D B4 00 mov ah,0
F000:A78F A8 01 test al,1
F000:A791 74 2D jz short loc_607 ; Jump if zero
F000:A793 BA 01F1 mov dx,1F1h
F000:A796 EC in al,dx ; port 1F1h, hdsk0-error regstr
F000:A797 A2 008D mov hdsk_error,al ; (0040:008D=0)
F000:A79A B4 02 mov ah,2
F000:A79C A8 01 test al,1
F000:A79E 75 20 jnz short loc_607 ; Jump if not zero
F000:A7A0 B4 01 mov ah,1
F000:A7A2 A8 04 test al,4
F000:A7A4 75 1A jnz short loc_607 ; Jump if not zero
F000:A7A6 B4 04 mov ah,4
F000:A7A8 A8 10 test al,10h
F000:A7AA 75 14 jnz short loc_607 ; Jump if not zero
F000:A7AC B4 10 mov ah,10h
F000:A7AE A8 40 test al,40h ; '@'
F000:A7B0 75 0E jnz short loc_607 ; Jump if not zero
F000:A7B2 B4 40 mov ah,40h ; '@'
F000:A7B4 A8 02 test al,2
F000:A7B6 75 08 jnz short loc_607 ; Jump if not zero
F000:A7B8 B4 0A mov ah,0Ah
F000:A7BA A8 80 test al,80h
F000:A7BC 75 02 jnz short loc_607 ; Jump if not zero
F000:A7BE B4 BB mov ah,0BBh
F000:A7C0 loc_607: ; xref F000:A779, A77F, A785, A78B
; A791, A79E, A7A4, A7AA
; A7B0, A7B6, A7BC
F000:A7C0 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
F000:A7C4 5A pop dx
F000:A7C5 8A C2 mov al,dl
F000:A7C7 5A pop dx
F000:A7C8 0A E4 or ah,ah ; Zero ?
F000:A7CA 74 01 jz short loc_ret_608 ; Jump if zero
F000:A7CC F9 stc ; Set carry flag
F000:A7CD loc_ret_608: ; xref F000:A7CA
F000:A7CD C3 retn
sub_113 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A2F3, A367, A3FF, A44B, A4BB, A547, A5AA
; A5C5
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_114 proc near
F000:A7CE E8 FEEC call sub_109 ; (A6BD)
F000:A7D1 FA cli ; Disable interrupts
F000:A7D2 50 push ax
F000:A7D3 C6 06 008E 00 mov hdsk_int_flags,0 ; (0040:008E=0)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 127
F000:A7D8 E4 A1 in al,0A1h ; port 0A1h, 8259-2 int IMR
F000:A7DA EB 00 jmp short loc_609 ; (A7DC)
F000:A7DC loc_609: ; xref F000:A7DA
F000:A7DC EB 00 jmp short loc_610 ; (A7DE)
F000:A7DE loc_610: ; xref F000:A7DC
F000:A7DE 24 BF and al,0BFh
F000:A7E0 E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
F000:A7E2 E4 21 in al,21h ; port 21h, 8259-1 int IMR
F000:A7E4 EB 00 jmp short loc_611 ; (A7E6)
F000:A7E6 loc_611: ; xref F000:A7E4
F000:A7E6 EB 00 jmp short loc_612 ; (A7E8)
F000:A7E8 loc_612: ; xref F000:A7E6
F000:A7E8 24 FB and al,0FBh
F000:A7EA E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:A7EC EB 00 jmp short loc_613 ; (A7EE)
F000:A7EE loc_613: ; xref F000:A7EC
F000:A7EE EB 00 jmp short loc_614 ; (A7F0)
F000:A7F0 loc_614: ; xref F000:A7EE
F000:A7F0 58 pop ax
F000:A7F1 52 push dx
F000:A7F2 BA 01F7 mov dx,1F7h
F000:A7F5 88 46 08 mov [bp+8],al
F000:A7F8 EE out dx,al ; port 1F7h, hdsk0-command reg
F000:A7F9 5A pop dx
F000:A7FA FB sti ; Enable interrupts
F000:A7FB C3 retn
sub_114 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A2C3, A2D3, A410, A41F
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_115 proc near
F000:A7FC 52 push dx
F000:A7FD 50 push ax
F000:A7FE 8B C3 mov ax,bx
F000:A800 C1 E8 04 shr ax,4 ; Shift w/zeros fill
F000:A803 8C C2 mov dx,es
F000:A805 03 C2 add ax,dx
F000:A807 8E C0 mov es,ax
F000:A809 83 E3 0F and bx,0Fh
F000:A80C 33 C0 xor ax,ax ; Zero register
F000:A80E BA 0001 mov dx,1
F000:A811 2B C3 sub ax,bx
F000:A813 83 DA 00 sbb dx,0
F000:A816 F7 76 18 div word ptr [bp+18h] ; ax,dxrem=dx:ax/data
F000:A819 8A D0 mov dl,al
F000:A81B 58 pop ax
F000:A81C 3A D0 cmp dl,al
F000:A81E 5A pop dx
F000:A81F 73 06 jnc short loc_ret_615 ; Jump if carry=0
F000:A821 B4 09 mov ah,9
F000:A823 88 26 0074 mov hdsk_status_1,ah ; (0040:0074=0)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 128
F000:A827 loc_ret_615: ; xref F000:A81F
F000:A827 C3 retn
sub_115 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A2E8, A313, A3DF, A437, A4A4, A50E, A59B
; A5BB
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_116 proc near
F000:A828 06 push es
F000:A829 53 push bx
F000:A82A 52 push dx
F000:A82B 50 push ax
F000:A82C E8 FE17 call sub_106 ; (A646)
F000:A82F 26: 8A 47 08 mov al,es:[bx+8]
F000:A833 8A E0 mov ah,al
F000:A835 24 08 and al,8
F000:A837 BA 03F6 mov dx,3F6h
F000:A83A EE out dx,al ; port 3F6h, hdsk0 register
F000:A83B A0 0076 mov al,hdsk_head_ctrl ; (0040:0076=0)
F000:A83E 24 C0 and al,0C0h
F000:A840 0A C4 or al,ah
F000:A842 A2 0076 mov hdsk_head_ctrl,al ; (0040:0076=0)
F000:A845 58 pop ax
F000:A846 5A pop dx
F000:A847 5B pop bx
F000:A848 07 pop es
F000:A849 C3 retn
sub_116 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A2EB, A443, A4B3
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_117 proc near
F000:A84A 50 push ax
F000:A84B 52 push dx
F000:A84C BA 01F2 mov dx,1F2h
F000:A84F 88 46 03 mov [bp+3],al
F000:A852 EE out dx,al ; port 1F2h, hdsk0-sector count
F000:A853 EB 00 jmp short loc_616 ; (A855)
F000:A855 loc_616: ; xref F000:A853
F000:A855 EB 00 jmp short loc_617 ; (A857)
F000:A857 loc_617: ; xref F000:A855
F000:A857 8A C1 mov al,cl
F000:A859 24 3F and al,3Fh ; '?'
F000:A85B BA 01F3 mov dx,1F3h
F000:A85E 88 46 04 mov [bp+4],al
F000:A861 EE out dx,al ; port 1F3h, hdsk0-sector numbr
F000:A862 EB 00 jmp short loc_618 ; (A864)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 129
F000:A864 loc_618: ; xref F000:A862
F000:A864 EB 00 jmp short loc_619 ; (A866)
F000:A866 loc_619: ; xref F000:A864
F000:A866 8A C5 mov al,ch
F000:A868 BA 01F4 mov dx,1F4h
F000:A86B 88 46 05 mov [bp+5],al
F000:A86E EE out dx,al ; port 1F4h, hdsk0-cylr,lo byte
F000:A86F EB 00 jmp short loc_620 ; (A871)
F000:A871 loc_620: ; xref F000:A86F
F000:A871 EB 00 jmp short loc_621 ; (A873)
F000:A873 loc_621: ; xref F000:A871
F000:A873 8A C1 mov al,cl
F000:A875 C0 E8 06 shr al,6 ; Shift w/zeros fill
F000:A878 8A 56 15 mov dl,[bp+15h]
F000:A87B C0 EA 04 shr dl,4 ; Shift w/zeros fill
F000:A87E 80 E2 0C and dl,0Ch
F000:A881 0A C2 or al,dl
F000:A883 BA 01F5 mov dx,1F5h
F000:A886 88 46 06 mov [bp+6],al
F000:A889 EE out dx,al ; port 1F5h, hdsk0-cylr,hi byte
F000:A88A EB 00 jmp short loc_622 ; (A88C)
F000:A88C loc_622: ; xref F000:A88A
F000:A88C EB 00 jmp short loc_623 ; (A88E)
F000:A88E loc_623: ; xref F000:A88C
F000:A88E BA 01F6 mov dx,1F6h
F000:A891 8A 46 07 mov al,[bp+7]
F000:A894 EE out dx,al ; port 1F6h, hdsk0-siz/drv/head
F000:A895 5A pop dx
F000:A896 58 pop ax
F000:A897 C3 retn
sub_117 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9498
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_118 proc near
F000:A898 FA cli ; Disable interrupts
F000:A899 FC cld ; Clear direction
F000:A89A BE 004C mov si,4Ch
F000:A89D BF 0100 mov di,100h
F000:A8A0 B8 A1A3 mov ax,0A1A3h
F000:A8A3 26: 87 04 xchg ax,es:[si]
F000:A8A6 AB stosw ; Store ax to es:[di]
F000:A8A7 8C C8 mov ax,cs
F000:A8A9 26: 87 44 02 xchg ax,es:[si+2]
F000:A8AD AB stosw ; Store ax to es:[di]
F000:A8AE B8 E845 mov ax,0E845h
F000:A8B1 BF 01D8 mov di,1D8h
F000:A8B4 AB stosw ; Store ax to es:[di]
F000:A8B5 26: 8C 0D mov es:[di],cs
F000:A8B8 BF 0442 mov di,442h
F000:A8BB 33 C0 xor ax,ax ; Zero register
F000:A8BD AB stosw ; Store ax to es:[di]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 130
F000:A8BE AB stosw ; Store ax to es:[di]
F000:A8BF AB stosw ; Store ax to es:[di]
F000:A8C0 AA stosb ; Store al to es:[di]
F000:A8C1 BF 0474 mov di,474h
F000:A8C4 AB stosw ; Store ax to es:[di]
F000:A8C5 AA stosb ; Store al to es:[di]
F000:A8C6 BF 048C mov di,48Ch
F000:A8C9 AB stosw ; Store ax to es:[di]
F000:A8CA AA stosb ; Store al to es:[di]
F000:A8CB BE E401 mov si,0E401h
F000:A8CE BF 0104 mov di,104h
F000:A8D1 26: 8C 4D 02 mov es:[di+2],cs
F000:A8D5 B0 92 mov al,92h
F000:A8D7 E8 45C5 call sub_257 ; (EE9F)
F000:A8DA 8A C8 mov cl,al
F000:A8DC C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:A8DF 74 19 jz short loc_624 ; Jump if zero
F000:A8E1 48 dec ax
F000:A8E2 3C 0E cmp al,0Eh
F000:A8E4 75 20 jne short loc_625 ; Jump if not equal
F000:A8E6 B0 99 mov al,99h
F000:A8E8 E8 45B4 call sub_257 ; (EE9F)
F000:A8EB 2C 01 sub al,1
F000:A8ED 72 0B jc short loc_624 ; Jump if carry Set
F000:A8EF 3C 2E cmp al,2Eh ; '.'
F000:A8F1 77 07 ja short loc_624 ; Jump if above
F000:A8F3 75 11 jnz short loc_625 ; Jump if not zero
F000:A8F5 E8 EF80 call sub_58 ; (9878)
F000:A8F8 EB 12 jmp short loc_626 ; (A90C)
F000:A8FA loc_624: ; xref F000:A8DF, A8ED, A8F1
F000:A8FA 8B C6 mov ax,si
F000:A8FC AB stosw ; Store ax to es:[di]
F000:A8FD BF 0118 mov di,118h
F000:A900 AB stosw ; Store ax to es:[di]
F000:A901 8C C8 mov ax,cs
F000:A903 AB stosw ; Store ax to es:[di]
F000:A904 EB 4B jmp short loc_631 ; (A951)
F000:A906 loc_625: ; xref F000:A8E4, A8F3
F000:A906 C1 E0 04 shl ax,4 ; Shift w/zeros fill
F000:A909 03 C6 add ax,si
F000:A90B AB stosw ; Store ax to es:[di]
F000:A90C loc_626: ; xref F000:A8F8
F000:A90C FE 06 0075 inc byte ptr ds:data_48e ; (C000:0075=54h)
F000:A910 BF 0118 mov di,118h
F000:A913 26: 8C 4D 02 mov es:[di+2],cs
F000:A917 8A C1 mov al,cl
F000:A919 25 000F and ax,0Fh
F000:A91C 74 19 jz short loc_627 ; Jump if zero
F000:A91E 48 dec ax
F000:A91F 3C 0E cmp al,0Eh
F000:A921 75 19 jne short loc_628 ; Jump if not equal
F000:A923 B0 9A mov al,9Ah
F000:A925 E8 4577 call sub_257 ; (EE9F)
F000:A928 2C 01 sub al,1
F000:A92A 72 0B jc short loc_627 ; Jump if carry Set
F000:A92C 3C 2E cmp al,2Eh ; '.'
F000:A92E 77 07 ja short loc_627 ; Jump if above
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 131
F000:A930 75 0A jnz short loc_628 ; Jump if not zero
F000:A932 E8 EF4B call sub_59 ; (9880)
F000:A935 EB 0B jmp short loc_629 ; (A942)
F000:A937 loc_627: ; xref F000:A91C, A92A, A92E
F000:A937 8B C6 mov ax,si
F000:A939 AB stosw ; Store ax to es:[di]
F000:A93A EB 0A jmp short loc_630 ; (A946)
F000:A93C loc_628: ; xref F000:A921, A930
F000:A93C C1 E0 04 shl ax,4 ; Shift w/zeros fill
F000:A93F 03 C6 add ax,si
F000:A941 AB stosw ; Store ax to es:[di]
F000:A942 loc_629: ; xref F000:A935
F000:A942 FE 06 0075 inc byte ptr ds:data_48e ; (C000:0075=54h)
F000:A946 loc_630: ; xref F000:A93A
F000:A946 B2 80 mov dl,80h
F000:A948 B4 14 mov ah,14h
F000:A94A CD 13 int 13h ; Disk dl=drive #: ah=func a4h
; controller diagnostic
F000:A94C 73 11 jnc short loc_632 ; Jump if carry=0
F000:A94E 83 CD 04 or bp,4
F000:A951 loc_631: ; xref F000:A904, A990
F000:A951 B8 8E8E mov ax,8E8Eh
F000:A954 E8 4548 call sub_257 ; (EE9F)
F000:A957 0C 08 or al,8
F000:A959 86 C4 xchg al,ah
F000:A95B E8 4550 call sub_258 ; (EEAE)
F000:A95E C3 retn
F000:A95F loc_632: ; xref F000:A94C
F000:A95F E8 0072 call sub_120 ; (A9D4)
F000:A962 73 05 jnc short loc_633 ; Jump if carry=0
F000:A964 83 CD 20 or bp,20h
F000:A967 EB 08 jmp short loc_634 ; (A971)
F000:A969 loc_633: ; xref F000:A962
F000:A969 E8 0034 call sub_119 ; (A9A0)
F000:A96C 73 03 jnc short loc_634 ; Jump if carry=0
F000:A96E 83 CD 08 or bp,8
F000:A971 loc_634: ; xref F000:A967, A96C
F000:A971 80 3E 0075 01 cmp byte ptr ds:data_48e,1 ; (C000:0075=54h)
F000:A976 74 14 je short loc_636 ; Jump if equal
F000:A978 B2 81 mov dl,81h
F000:A97A E8 0057 call sub_120 ; (A9D4)
F000:A97D 73 05 jnc short loc_635 ; Jump if carry=0
F000:A97F 83 CD 40 or bp,40h
F000:A982 EB 08 jmp short loc_636 ; (A98C)
F000:A984 loc_635: ; xref F000:A97D
F000:A984 E8 0019 call sub_119 ; (A9A0)
F000:A987 73 03 jnc short loc_636 ; Jump if carry=0
F000:A989 83 CD 10 or bp,10h
F000:A98C loc_636: ; xref F000:A976, A982, A987
F000:A98C F7 C5 0020 test bp,20h
F000:A990 75 BF jnz loc_631 ; Jump if not zero
F000:A992 B8 8E8E mov ax,8E8Eh
F000:A995 E8 4507 call sub_257 ; (EE9F)
F000:A998 24 F7 and al,0F7h
F000:A99A 86 C4 xchg al,ah
F000:A99C E8 450F call sub_258 ; (EEAE)
F000:A99F C3 retn
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 132
sub_118 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A969, A984
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_119 proc near
F000:A9A0 B4 08 mov ah,8
F000:A9A2 52 push dx
F000:A9A3 CD 13 int 13h ; Disk dl=drive #: ah=func a8h
; read parameters for drive dl
F000:A9A5 58 pop ax
F000:A9A6 8A D0 mov dl,al
F000:A9A8 72 29 jc short loc_ret_638 ; Jump if carry Set
F000:A9AA loc_637: ; xref F000:A9D0
F000:A9AA B8 0401 mov ax,401h
F000:A9AD CD 13 int 13h ; Disk dl=drive #: ah=func a4h
; verify sectors with mem es:bx
F000:A9AF 73 22 jnc short loc_ret_638 ; Jump if carry=0
F000:A9B1 80 FC 0A cmp ah,0Ah
F000:A9B4 74 1D je short loc_ret_638 ; Jump if equal
F000:A9B6 80 FC 10 cmp ah,10h
F000:A9B9 74 18 je short loc_ret_638 ; Jump if equal
F000:A9BB 80 FC 11 cmp ah,11h
F000:A9BE 74 13 je short loc_ret_638 ; Jump if equal
F000:A9C0 A1 006C mov ax,ds:data_44e ; (C000:006C=4D20h)
F000:A9C3 2B C6 sub ax,si
F000:A9C5 3D 02D8 cmp ax,2D8h
F000:A9C8 F5 cmc ; Complement carry
F000:A9C9 72 08 jc short loc_ret_638 ; Jump if carry Set
F000:A9CB FE C9 dec cl
F000:A9CD F6 C1 3F test cl,3Fh ; '?'
F000:A9D0 75 D8 jnz loc_637 ; Jump if not zero
F000:A9D2 F9 stc ; Set carry flag
F000:A9D3 loc_ret_638: ; xref F000:A9A8, A9AF, A9B4, A9B9
; A9BE, A9C9
F000:A9D3 C3 retn
sub_119 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A95F, A97A
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_120 proc near
F000:A9D4 8B 36 006C mov si,ds:data_44e ; (C000:006C=4D20h)
F000:A9D8 loc_639: ; xref F000:A9ED
F000:A9D8 B4 09 mov ah,9
F000:A9DA CD 13 int 13h ; Disk dl=drive #: ah=func a9h
; initialize drive parameters
F000:A9DC 72 06 jc short loc_640 ; Jump if carry Set
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 133
F000:A9DE B4 11 mov ah,11h
F000:A9E0 CD 13 int 13h ; Disk dl=drive #: ah=func a1h
; recalibrate drive
F000:A9E2 73 0B jnc short loc_ret_641 ; Jump if carry=0
F000:A9E4 loc_640: ; xref F000:A9DC
F000:A9E4 A1 006C mov ax,ds:data_44e ; (C000:006C=4D20h)
F000:A9E7 2B C6 sub ax,si
F000:A9E9 3D 02D8 cmp ax,2D8h
F000:A9EC F5 cmc ; Complement carry
F000:A9ED 73 E9 jnc loc_639 ; Jump if carry=0
F000:A9EF loc_ret_641: ; xref F000:A9E2
F000:A9EF C3 retn
sub_120 endp
F000:A9F0 loc_642: ; xref F000:9325
F000:A9F0 B8 028F mov ax,28Fh
F000:A9F3 E8 449C call sub_256 ; (EE92)
F000:A9F6 B0 30 mov al,30h ; '0'
F000:A9F8 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:A9FA E8 CC71 call $-338Ch
F000:A9FD BF 0600 mov di,600h
F000:AA00 57 push di
F000:AA01 BE E260 mov si,0E260h
F000:AA04 B9 0030 mov cx,30h
F000:AA07 FA cli ; Disable interrupts
F000:AA08 FC cld ; Clear direction
F000:AA09 2E: F3/ A5 rep movs word ptr es:[di],word ptr cs:[si] ; Rep when cx >0 Mov [si] to es:[di]
F000:AA0C 33 F6 xor si,si ; Zero register
F000:AA0E BF 8010 mov di,8010h
F000:AA11 B9 0300 mov cx,300h
F000:AA14 26: F3/ A5 rep movs word ptr es:[di],word ptr es:[si] ; Rep when cx >0 Mov [si] to es:[di]
F000:AA17 5E pop si
F000:AA18 26: C7 44 0A 0600 mov word ptr es:[si+0Ah],600h
F000:AA1E 26: C6 44 0C 00 mov byte ptr es:[si+0Ch],0
F000:AA23 BB 0800 mov bx,800h
F000:AA26 B4 89 mov ah,89h
F000:AA28 B0 31 mov al,31h ; '1'
F000:AA2A E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AA2C CD 15 int 15h ; General services, ah=func 89h
; set protected mode operation
F000:AA2E 74 06 jz short loc_644 ; Jump if zero
F000:AA30 loc_643: ; xref F000:ABB7, AD7A
F000:AA30 BE 7D22 mov si,7D22h
F000:AA33 E9 E35E jmp loc_229 ; (8D94)
F000:AA36 loc_644: ; xref F000:AA2E
F000:AA36 E8 0344 call sub_129 ; (AD7D)
F000:AA39 B8 0040 mov ax,seg_b
F000:AA3C 8E C0 mov es,ax
F000:AA3E B0 32 mov al,32h ; '2'
F000:AA40 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AA42 EB 1F jmp short loc_647 ; (AA63)
F000:AA44 loc_645: ; xref F000:AA79, AA8D
F000:AA44 B8 018F mov ax,18Fh
F000:AA47 E8 4448 call sub_256 ; (EE92)
F000:AA4A E8 E3F6 call sub_33 ; (8E43)
F000:AA4D E9 3700 jmp loc_1198 ; (E150)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 134
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:AA50 loc_646: ; xref F000:80FB, 8102
F000:AA50 BE 8010 mov si,8010h
F000:AA53 33 FF xor di,di ; Zero register
F000:AA55 B9 0300 mov cx,300h
F000:AA58 FA cli ; Disable interrupts
F000:AA59 FC cld ; Clear direction
F000:AA5A 26: F3/ A5 rep movs word ptr es:[di],word ptr es:[si] ; Rep when cx >0 Mov [si] to es:[di]
F000:AA5D BE 7D36 mov si,7D36h
F000:AA60 E9 E331 jmp loc_229 ; (8D94)
F000:AA63 loc_647: ; xref F000:AA42
F000:AA63 33 FF xor di,di ; Zero register
F000:AA65 BE 0244 mov si,244h
F000:AA68 B8 00FF mov ax,0FFh
F000:AA6B BB 000F mov bx,0Fh
F000:AA6E 8A 16 0000 mov dl,byte ptr @rs232_port_1 ; (0040:0000=0F8h)
F000:AA72 E8 017C call sub_124 ; (ABF1)
F000:AA75 3A 16 0000 cmp dl,byte ptr @rs232_port_1 ; (0040:0000=0F8h)
F000:AA79 75 C9 jne loc_645 ; Jump if not equal
F000:AA7B 50 push ax
F000:AA7C B0 33 mov al,33h ; '3'
F000:AA7E E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AA80 B8 0009 mov ax,9
F000:AA83 BB 0000 mov bx,0
F000:AA86 E8 0168 call sub_124 ; (ABF1)
F000:AA89 3A 16 0000 cmp dl,byte ptr @rs232_port_1 ; (0040:0000=0F8h)
F000:AA8D 75 B5 jne loc_645 ; Jump if not equal
F000:AA8F 50 push ax
F000:AA90 B0 34 mov al,34h ; '4'
F000:AA92 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AA94 58 pop ax
F000:AA95 BB 000A mov bx,0Ah
F000:AA98 C6 04 00 mov byte ptr [si],0
F000:AA9B C6 44 03 00 mov byte ptr [si+3],0
F000:AA9F 33 D2 xor dx,dx ; Zero register
F000:AAA1 E8 0172 call sub_125 ; (AC16)
F000:AAA4 B0 35 mov al,35h ; '5'
F000:AAA6 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AAA8 58 pop ax
F000:AAA9 52 push dx
F000:AAAA 33 D2 xor dx,dx ; Zero register
F000:AAAC BB 0100 mov bx,100h
F000:AAAF C6 04 0F mov byte ptr [si],0Fh
F000:AAB2 C6 44 03 00 mov byte ptr [si+3],0
F000:AAB6 E8 015D call sub_125 ; (AC16)
F000:AAB9 5B pop bx
F000:AABA 87 DA xchg bx,dx
F000:AABC B0 36 mov al,36h ; '6'
F000:AABE E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AAC0 68 AAC7 push 0AAC7h
F000:AAC3 68 FA4E push 0FA4Eh
F000:AAC6 C3 retn
F000:AAC7 B0 37 E6 80 0B ED db 0B0h, 37h, 0E6h, 80h, 0Bh, 0EDh
F000:AACD 79 37 52 53 0B D2 db 79h, 37h, 52h, 53h, 0Bh, 0D2h
F000:AAD3 74 10 C6 04 00 C6 db 74h, 10h, 0C6h, 4, 0, 0C6h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 135
F000:AAD9 44 03 00 db 44h, 3, 0
F000:AADC loc_648: ; xref F000:AAE3
F000:AADC E8 02AB call sub_130 ; (AD8A)
F000:AADF E8 02B5 call sub_131 ; (AD97)
F000:AAE2 4A dec dx
F000:AAE3 75 F7 jnz loc_648 ; Jump if not zero
F000:AAE5 B0 38 mov al,38h ; '8'
F000:AAE7 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AAE9 0B DB or bx,bx ; Zero ?
F000:AAEB 74 10 jz short loc_650 ; Jump if zero
F000:AAED C6 04 0F mov byte ptr [si],0Fh
F000:AAF0 C6 44 03 00 mov byte ptr [si+3],0
F000:AAF4 loc_649: ; xref F000:AAFB
F000:AAF4 E8 0293 call sub_130 ; (AD8A)
F000:AAF7 E8 029D call sub_131 ; (AD97)
F000:AAFA 4B dec bx
F000:AAFB 75 F7 jnz loc_649 ; Jump if not zero
F000:AAFD loc_650: ; xref F000:AAEB
F000:AAFD B0 39 mov al,39h ; '9'
F000:AAFF E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB01 5B pop bx
F000:AB02 5A pop dx
F000:AB03 42 inc dx
F000:AB04 EB 38 jmp short loc_652 ; (AB3E)
F000:AB06 55 BD 01 00 53 33 db 55h, 0BDh, 1, 0, 53h, 33h
F000:AB0C DB B0 3A E6 80 E8 db 0DBh, 0B0h, 3Ah, 0E6h, 80h, 0E8h
F000:AB12 E4 01 C6 04 00 C6 db 0E4h, 1, 0C6h, 4, 0, 0C6h
F000:AB18 44 03 00 B0 3B E6 db 44h, 3, 0, 0B0h, 3Bh, 0E6h
F000:AB1E 80 E8 32 01 43 8B db 80h, 0E8h, 32h, 1, 43h, 8Bh
F000:AB24 EB EB 00 db 0EBh, 0EBh, 0
F000:AB27 loc_651:
F000:AB27 90 nop ;
F000:AB28 5A pop dx
F000:AB29 53 push bx
F000:AB2A C6 04 0F mov byte ptr [si],0Fh
F000:AB2D C6 44 03 00 mov byte ptr [si+3],0
F000:AB31 B0 3C mov al,3Ch ; '<'
F000:AB33 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB35 E8 011C call sub_127 ; (AC54)
F000:AB38 5A pop dx
F000:AB39 5D pop bp
F000:AB3A B0 3D mov al,3Dh ; '='
F000:AB3C E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB3E loc_652: ; xref F000:AB04
F000:AB3E 89 16 0013 mov main_ram_size,dx ; (0040:0013=280h)
F000:AB42 8A E3 mov ah,bl
F000:AB44 B0 B0 mov al,0B0h
F000:AB46 E8 4349 call sub_256 ; (EE92)
F000:AB49 8A E7 mov ah,bh
F000:AB4B B0 B1 mov al,0B1h
F000:AB4D E8 4342 call sub_256 ; (EE92)
F000:AB50 60 pusha ; Save all regs
F000:AB51 8B C4 mov ax,sp
F000:AB53 A3 0067 mov @gen_io_ptr,ax ; (0040:0067=522h)
F000:AB56 B8 038F mov ax,38Fh
F000:AB59 E8 4336 call sub_256 ; (EE92)
F000:AB5C E8 E2E4 call sub_33 ; (8E43)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 136
F000:AB5F B0 3E mov al,3Eh ; '>'
F000:AB61 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB63 E9 35EA jmp loc_1198 ; (E150)
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:AB66 loc_653: ; xref F000:80FB, 8106
F000:AB66 B0 3F mov al,3Fh ; '?'
F000:AB68 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB6A A1 0067 mov ax,@gen_io_ptr ; (0040:0067=522h)
F000:AB6D 8B E0 mov sp,ax
F000:AB6F 61 popa ; Restore all regs
F000:AB70 EB 00 jmp short loc_654 ; (AB72)
F000:AB72 loc_654: ; xref F000:AB70
F000:AB72 90 nop ;
F000:AB73 B0 40 mov al,40h ; '@'
F000:AB75 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB77 E8 E39A call sub_45 ; (8F14)
F000:AB7A E8 E37A call sub_44 ; (8EF7)
F000:AB7D 75 38 jnz short loc_657 ; Jump if not zero
F000:AB7F B0 41 mov al,41h ; 'A'
F000:AB81 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB83 0F 01 E0 smsw ax ; Store machine stat
F000:AB86 F6 C4 FF test ah,0FFh
F000:AB89 75 0C jnz short loc_655 ; Jump if not zero
F000:AB8B 0F 20 C0 mov eax,cr0 ; Mov reg-control reg
F000:AB8E 66| 25 9FFFFFFF and eax,9FFFFFFFh
F000:AB94 0F 22 C0 mov cr0,eax ; Mov reg-control reg
F000:AB97 loc_655: ; xref F000:AB89
F000:AB97 E8 CB21 call $-34DCh
F000:AB9A B0 42 mov al,42h ; 'B'
F000:AB9C E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:AB9E E8 CB2F call $-34CEh
F000:ABA1 B0 43 mov al,43h ; 'C'
F000:ABA3 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:ABA5 E8 0012 call sub_121 ; (ABBA)
F000:ABA8 A0 0012 mov al,init_test_flag ; (0040:0012=0BFh)
F000:ABAB A8 20 test al,20h ; ' '
F000:ABAD 75 05 jnz short loc_656 ; Jump if not zero
F000:ABAF B0 FE mov al,0FEh
F000:ABB1 E6 21 out 21h,al ; port 21h, 8259-1 int comands
; al = 0FEh, IRQ0 (timer) only
F000:ABB3 FB sti ; Enable interrupts
F000:ABB4 loc_656: ; xref F000:ABAD
F000:ABB4 E9 20B3 jmp loc_1043 ; (CC6A)
F000:ABB7 loc_657: ; xref F000:AB7D
F000:ABB7 E9 FE76 jmp loc_643 ; (AA30)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:959F, ABA5
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_121 proc near
F000:ABBA 8B 16 0069 mov dx,ds:data_43e ; (C000:0069=4E45h)
F000:ABBE B4 02 mov ah,2
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 137
F000:ABC0 B7 00 mov bh,0
F000:ABC2 E8 CA30 call $-35CDh
F000:ABC5 B9 0050 mov cx,seg seg_c
F000:ABC8 locloop_658: ; xref F000:ABCE
F000:ABC8 B8 0E20 mov ax,0E20h
F000:ABCB E8 CA27 call $-35D6h
F000:ABCE E2 F8 loop locloop_658 ; Loop if cx > 0
F000:ABD0 B4 02 mov ah,2
F000:ABD2 E8 CA20 call $-35DDh
F000:ABD5 C3 retn
sub_121 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:AD38
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_122 proc near
F000:ABD6 B9 000A mov cx,0Ah
F000:ABD9 C1 E0 06 shl ax,6 ; Shift w/zeros fill
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:ABE5
sub_123:
F000:ABDC 33 D2 xor dx,dx ; Zero register
F000:ABDE F7 F1 div cx ; ax,dx rem=dx:ax/reg
F000:ABE0 0B C0 or ax,ax ; Zero ?
F000:ABE2 74 05 jz short loc_659 ; Jump if zero
F000:ABE4 52 push dx
F000:ABE5 E8 FFF4 call sub_123 ; (ABDC)
F000:ABE8 5A pop dx
F000:ABE9 loc_659: ; xref F000:ABE2
F000:ABE9 8A C2 mov al,dl
F000:ABEB 0C 30 or al,30h ; '0'
F000:ABED E8 E1E2 call sub_29 ; (8DD2)
F000:ABF0 C3 retn
sub_122 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:AA72, AA86
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_124 proc near
F000:ABF1 88 04 mov [si],al
F000:ABF3 88 64 03 mov [si+3],ah
F000:ABF6 loc_660: ; xref F000:AC0E, AC13
F000:ABF6 8C C1 mov cx,es
F000:ABF8 8E C1 mov es,cx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 138
F000:ABFA F9 stc ; Set carry flag
F000:ABFB loc_661: ; xref F000:AC02
F000:ABFB 26: 88 05 mov es:[di],al
F000:ABFE FE C8 dec al
F000:AC00 D1 DF rcr di,1 ; Rotate thru carry
F000:AC02 73 F7 jnc loc_661 ; Jump if carry=0
F000:AC04 80 2C 01 sub byte ptr [si],1
F000:AC07 73 03 jnc short loc_662 ; Jump if carry=0
F000:AC09 FE 4C 03 dec byte ptr [si+3]
F000:AC0C loc_662: ; xref F000:AC07
F000:AC0C 3A 1C cmp bl,[si]
F000:AC0E 75 E6 jne loc_660 ; Jump if not equal
F000:AC10 3A 7C 03 cmp bh,[si+3]
F000:AC13 75 E1 jne loc_660 ; Jump if not equal
F000:AC15 C3 retn
sub_124 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:AAA1, AAB6
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_125 proc near
F000:AC16 loc_663: ; xref F000:AC3F
F000:AC16 42 inc dx
F000:AC17 80 04 01 add byte ptr [si],1
F000:AC1A 73 03 jnc short loc_664 ; Jump if carry=0
F000:AC1C FE 44 03 inc byte ptr [si+3]
F000:AC1F loc_664: ; xref F000:AC1A
F000:AC1F 3A 1C cmp bl,[si]
F000:AC21 75 05 jne short loc_665 ; Jump if not equal
F000:AC23 3A 7C 03 cmp bh,[si+3]
F000:AC26 74 19 je short loc_667 ; Jump if equal
F000:AC28 loc_665: ; xref F000:AC21
F000:AC28 8C C1 mov cx,es
F000:AC2A 8E C1 mov es,cx
F000:AC2C BF 0001 mov di,1
F000:AC2F loc_666: ; xref F000:AC38
F000:AC2F FE C0 inc al
F000:AC31 26: 30 05 xor es:[di],al
F000:AC34 75 0B jnz short loc_667 ; Jump if not zero
F000:AC36 D1 D7 rcl di,1 ; Rotate thru carry
F000:AC38 73 F5 jnc loc_666 ; Jump if carry=0
F000:AC3A FE C0 inc al
F000:AC3C 26: 30 05 xor es:[di],al
F000:AC3F 74 D5 jz loc_663 ; Jump if zero
F000:AC41 loc_667: ; xref F000:AC26, AC34
F000:AC41 4A dec dx
F000:AC42 C3 retn
sub_125 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 139
; Called from: F000:AC9B, ACA9
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_126 proc near
F000:AC43 loc_668:
F000:AC43 F7 C7 FC3F test di,0FC3Fh
F000:AC47 7A 01 jp short loc_669 ; Jump if parity=1
F000:AC49 F9 stc ; Set carry flag
F000:AC4A loc_669: ; xref F000:AC47
F000:AC4A D1 DF rcr di,1 ; Rotate thru carry
F000:AC4C A8 C3 test al,0C3h
F000:AC4E 7A 01 jp short loc_670 ; Jump if parity=1
F000:AC50 F9 stc ; Set carry flag
F000:AC51 loc_670: ; xref F000:AC4E
F000:AC51 D0 D8 rcr al,1 ; Rotate thru carry
F000:AC53 C3 retn
sub_126 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:AB35
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_127 proc near
F000:AC54 33 DB xor bx,bx ; Zero register
F000:AC56 0B D2 or dx,dx ; Zero ?
F000:AC58 74 76 jz short loc_ret_679 ; Jump if zero
F000:AC5A 81 3E 0013 FEDC cmp main_ram_size,0FEDCh ; (0040:0013=280h)
F000:AC60 74 75 je short loc_681 ; Jump if equal
F000:AC62 B0 AE mov al,0AEh
F000:AC64 E8 E257 call sub_40 ; (8EBE)
F000:AC67 E8 E278 call sub_43 ; (8EE2)
F000:AC6A E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:AC6C EB 00 jmp short loc_671 ; (AC6E)
F000:AC6E loc_671: ; xref F000:AC6C
F000:AC6E EB 00 jmp short loc_672 ; (AC70)
F000:AC70 loc_672: ; xref F000:AC6E, ACC1
F000:AC70 E4 64 in al,64h ; port 64h, keyboard status
F000:AC72 A8 01 test al,1
F000:AC74 74 0A jz short loc_675 ; Jump if zero
F000:AC76 EB 00 jmp short loc_673 ; (AC78)
F000:AC78 loc_673: ; xref F000:AC76
F000:AC78 EB 00 jmp short loc_674 ; (AC7A)
F000:AC7A loc_674: ; xref F000:AC78
F000:AC7A E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:AC7C 3C 01 cmp al,1
F000:AC7E 74 51 je short loc_680 ; Jump if equal
F000:AC80 loc_675: ; xref F000:AC74
F000:AC80 E8 0107 call sub_130 ; (AD8A)
F000:AC83 E8 E1BD call sub_33 ; (8E43)
F000:AC86 53 push bx
F000:AC87 E8 0117 call sub_132 ; (ADA1)
F000:AC8A 5B pop bx
F000:AC8B 75 59 jnz short loc_682 ; Jump if not zero
F000:AC8D 26: 30 05 xor es:[di],al
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 140
F000:AC90 8B FA mov di,dx
F000:AC92 8B C7 mov ax,di
F000:AC94 B9 4000 mov cx,4000h
F000:AC97 50 push ax
F000:AC98 51 push cx
F000:AC99 0A C4 or al,ah
F000:AC9B locloop_676: ; xref F000:ACA1
F000:AC9B E8 FFA5 call sub_126 ; (AC43)
F000:AC9E 26: 88 05 mov es:[di],al
F000:ACA1 E2 F8 loop locloop_676 ; Loop if cx > 0
F000:ACA3 59 pop cx
F000:ACA4 58 pop ax
F000:ACA5 8B F8 mov di,ax
F000:ACA7 0A C4 or al,ah
F000:ACA9 locloop_677: ; xref F000:ACAF
F000:ACA9 E8 FF97 call sub_126 ; (AC43)
F000:ACAC 26: 30 05 xor es:[di],al
F000:ACAF E1 F8 loopz locloop_677 ; Loop if zf=1, cx>0
F000:ACB1 75 33 jnz short loc_682 ; Jump if not zero
F000:ACB3 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:ACB5 A8 C0 test al,0C0h
F000:ACB7 75 2D jnz short loc_682 ; Jump if not zero
F000:ACB9 E8 00DB call sub_131 ; (AD97)
F000:ACBC 43 inc bx
F000:ACBD E8 0038 call sub_128 ; (ACF8)
F000:ACC0 4A dec dx
F000:ACC1 75 AD jnz loc_672 ; Jump if not zero
F000:ACC3 loc_678: ; xref F000:ACE4, ACF6
F000:ACC3 E8 E17D call sub_33 ; (8E43)
F000:ACC6 B0 AD mov al,0ADh
F000:ACC8 E8 E1F3 call sub_40 ; (8EBE)
F000:ACCB E8 E214 call sub_43 ; (8EE2)
F000:ACCE E4 60 in al,60h ; port 60h, keybd scan or sw1
F000:ACD0 loc_ret_679: ; xref F000:AC58
F000:ACD0 C3 retn
F000:ACD1 loc_680: ; xref F000:AC7E
F000:ACD1 C7 06 0013 FEDC mov main_ram_size,0FEDCh ; (0040:0013=280h)
F000:ACD7 loc_681: ; xref F000:AC60, ACE2
F000:ACD7 E8 00B0 call sub_130 ; (AD8A)
F000:ACDA E8 00BA call sub_131 ; (AD97)
F000:ACDD 43 inc bx
F000:ACDE E8 0017 call sub_128 ; (ACF8)
F000:ACE1 4A dec dx
F000:ACE2 75 F3 jnz loc_681 ; Jump if not zero
F000:ACE4 EB DD jmp short loc_678 ; (ACC3)
F000:ACE6 loc_682: ; xref F000:AC8B, ACB1, ACB7, ACF4
F000:ACE6 53 push bx
F000:ACE7 BB 0003 mov bx,3
F000:ACEA E8 E658 call sub_50 ; (9345)
F000:ACED 5B pop bx
F000:ACEE FA cli ; Disable interrupts
F000:ACEF A0 0012 mov al,init_test_flag ; (0040:0012=0BFh)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 141
F000:ACF2 A8 20 test al,20h ; ' '
F000:ACF4 74 F0 jz loc_682 ; Jump if zero
F000:ACF6 EB CB jmp short loc_678 ; (ACC3)
sub_127 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:ACBD, ACDE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_128 proc near
F000:ACF8 60 pusha ; Save all regs
F000:ACF9 8B C4 mov ax,sp
F000:ACFB A3 0067 mov ds:data_42e,ax ; (C000:0067=4449h)
F000:ACFE B8 068F mov ax,68Fh
F000:AD01 E8 418E call sub_256 ; (EE92)
F000:AD04 E9 3449 jmp loc_1198 ; (E150)
sub_128 endp
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:AD07 loc_683: ; xref F000:80FB, 810C
F000:AD07 A1 0067 mov ax,@gen_io_ptr ; (0040:0067=522h)
F000:AD0A 8B E0 mov sp,ax
F000:AD0C E8 00DA call sub_134 ; (ADE9)
F000:AD0F B0 0D mov al,0Dh
F000:AD11 E8 E0BE call sub_29 ; (8DD2)
F000:AD14 61 popa ; Restore all regs
F000:AD15 60 pusha ; Save all regs
F000:AD16 8B C3 mov ax,bx
F000:AD18 03 C5 add ax,bp
F000:AD1A 50 push ax
F000:AD1B 3D 009D cmp ax,9Dh
F000:AD1E 73 16 jae short loc_685 ; Jump if above or =
F000:AD20 B9 0001 mov cx,1
F000:AD23 3C 10 cmp al,10h
F000:AD25 73 08 jae short locloop_684 ; Jump if above or =
F000:AD27 B1 02 mov cl,2
F000:AD29 3C 02 cmp al,2
F000:AD2B 73 02 jae short locloop_684 ; Jump if above or =
F000:AD2D B1 03 mov cl,3
F000:AD2F locloop_684: ; xref F000:AD25, AD2B, AD34
F000:AD2F B0 30 mov al,30h ; '0'
F000:AD31 E8 E09E call sub_29 ; (8DD2)
F000:AD34 E2 F9 loop locloop_684 ; Loop if cx > 0
F000:AD36 loc_685: ; xref F000:AD1E
F000:AD36 58 pop ax
F000:AD37 50 push ax
F000:AD38 E8 FE9B call sub_122 ; (ABD6)
F000:AD3B BE 7D55 mov si,7D55h
F000:AD3E E8 E078 call sub_27 ; (8DB9)
F000:AD41 58 pop ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 142
F000:AD42 48 dec ax
F000:AD43 75 19 jnz short loc_686 ; Jump if not zero
F000:AD45 8B 16 0069 mov dx,@gen_io_seg ; (0040:0069=9087h)
F000:AD49 B7 00 mov bh,0
F000:AD4B B4 02 mov ah,2
F000:AD4D E8 C8A5 call $-3758h
F000:AD50 BE 7E19 mov si,7E19h
F000:AD53 E8 E063 call sub_27 ; (8DB9)
F000:AD56 80 EE 02 sub dh,2
F000:AD59 B4 02 mov ah,2
F000:AD5B E8 C897 call $-3766h
F000:AD5E loc_686: ; xref F000:AD43
F000:AD5E B8 028F mov ax,28Fh
F000:AD61 E8 412E call sub_256 ; (EE92)
F000:AD64 BE 0600 mov si,600h
F000:AD67 BB 0800 mov bx,800h
F000:AD6A B4 89 mov ah,89h
F000:AD6C CD 15 int 15h ; General services, ah=func 89h
; set protected mode operation
F000:AD6E 75 0A jnz short loc_687 ; Jump if not zero
F000:AD70 E8 000A call sub_129 ; (AD7D)
F000:AD73 B8 0040 mov ax,seg_b
F000:AD76 8E C0 mov es,ax
F000:AD78 61 popa ; Restore all regs
F000:AD79 C3 retn
F000:AD7A loc_687: ; xref F000:AD6E
F000:AD7A E9 FCB3 jmp loc_643 ; (AA30)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:AA36, AD70
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_129 proc near
F000:AD7D A0 0012 mov al,ds:data_31e ; (C000:0012=45h)
F000:AD80 A8 20 test al,20h ; ' '
F000:AD82 75 05 jnz short loc_ret_688 ; Jump if not zero
F000:AD84 B0 FE mov al,0FEh
F000:AD86 E6 21 out 21h,al ; port 21h, 8259-1 int comands
; al = 0FEh, IRQ0 (timer) only
F000:AD88 FB sti ; Enable interrupts
F000:AD89 loc_ret_688: ; xref F000:AD82
F000:AD89 C3 retn
sub_129 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:AADC, AAF4, AC80, ACD7
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_130 proc near
F000:AD8A 80 04 01 add byte ptr [si],1
F000:AD8D 73 03 jnc short loc_689 ; Jump if carry=0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 143
F000:AD8F FE 44 03 inc byte ptr [si+3]
F000:AD92 loc_689: ; xref F000:AD8D
F000:AD92 8C C1 mov cx,es
F000:AD94 8E C1 mov es,cx
F000:AD96 C3 retn
sub_130 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:AADF, AAF7, ACB9, ACDA, CE02
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_131 proc near
F000:AD97 loc_690:
F000:AD97 33 C0 xor ax,ax ; Zero register
F000:AD99 33 FF xor di,di ; Zero register
F000:AD9B B9 8000 mov cx,8000h
F000:AD9E F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:ADA0 C3 retn
sub_131 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:AC87
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_132 proc near
F000:ADA1 BB 8000 mov bx,8000h
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:9375
sub_133:
F000:ADA4 B8 8080 mov ax,8080h
F000:ADA7 8B CB mov cx,bx
F000:ADA9 33 FF xor di,di ; Zero register
F000:ADAB F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:ADAD 8B CB mov cx,bx
F000:ADAF 33 FF xor di,di ; Zero register
F000:ADB1 F3/ AF repe scasw ; Rep zf=1+cx >0 Scan es:[di] for ax
F000:ADB3 75 33 jnz short loc_ret_691 ; Jump if not zero
F000:ADB5 B8 5555 mov ax,5555h
F000:ADB8 8B CB mov cx,bx
F000:ADBA 33 FF xor di,di ; Zero register
F000:ADBC F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:ADBE 8B CB mov cx,bx
F000:ADC0 33 FF xor di,di ; Zero register
F000:ADC2 F3/ AF repe scasw ; Rep zf=1+cx >0 Scan es:[di] for ax
F000:ADC4 75 22 jnz short loc_ret_691 ; Jump if not zero
F000:ADC6 B8 3333 mov ax,3333h
F000:ADC9 8B CB mov cx,bx
F000:ADCB 33 FF xor di,di ; Zero register
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 144
F000:ADCD F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:ADCF 8B CB mov cx,bx
F000:ADD1 33 FF xor di,di ; Zero register
F000:ADD3 F3/ AF repe scasw ; Rep zf=1+cx >0 Scan es:[di] for ax
F000:ADD5 75 11 jnz short loc_ret_691 ; Jump if not zero
F000:ADD7 B8 0F0F mov ax,0F0Fh
F000:ADDA 8B CB mov cx,bx
F000:ADDC 33 FF xor di,di ; Zero register
F000:ADDE F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:ADE0 8B CB mov cx,bx
F000:ADE2 33 FF xor di,di ; Zero register
F000:ADE4 F3/ AF repe scasw ; Rep zf=1+cx >0 Scan es:[di] for ax
F000:ADE6 75 00 jnz short loc_ret_691 ; Jump if not zero
F000:ADE8 loc_ret_691: ; xref F000:ADB3, ADC4, ADD5, ADE6
F000:ADE8 C3 retn
sub_132 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:AD0C
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_134 proc near
F000:ADE9 B0 B6 mov al,0B6h
F000:ADEB E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
F000:ADED 32 C0 xor al,al ; Zero register
F000:ADEF EB 00 jmp short loc_692 ; (ADF1)
F000:ADF1 loc_692: ; xref F000:ADEF
F000:ADF1 EB 00 jmp short loc_693 ; (ADF3)
F000:ADF3 loc_693: ; xref F000:ADF1
F000:ADF3 E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:ADF5 EB 00 jmp short loc_694 ; (ADF7)
F000:ADF7 loc_694: ; xref F000:ADF5
F000:ADF7 EB 00 jmp short loc_695 ; (ADF9)
F000:ADF9 loc_695: ; xref F000:ADF7
F000:ADF9 E6 42 out 42h,al ; port 42h, 8253 timer 2 spkr
F000:ADFB E4 61 in al,61h ; port 61h, 8255 port B, read
F000:ADFD 0C 03 or al,3
F000:ADFF EB 00 jmp short loc_696 ; (AE01)
F000:AE01 loc_696: ; xref F000:ADFF
F000:AE01 EB 00 jmp short loc_697 ; (AE03)
F000:AE03 loc_697: ; xref F000:AE01
F000:AE03 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:AE05 B9 00FF mov cx,0FFh
F000:AE08 locloop_698: ; xref F000:AE08
F000:AE08 E2 FE loop locloop_698 ; Loop if cx > 0
F000:AE0A 24 FC and al,0FCh
F000:AE0C E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
; al = 0, disable parity
F000:AE0E C3 retn
sub_134 endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 145
F000:AE0F 00 db 0
F000:AE10 AEAA data_119 dw offset loc_706 ; Data table (indexed access)
; xref F000:AE57
F000:AE12 AEDE data_120 dw offset loc_710 ; xref F000:AE57
F000:AE14 AFF7 data_121 dw offset loc_735 ; xref F000:AE57
F000:AE16 AFF7 data_122 dw offset loc_735 ; xref F000:AE57
F000:AE18 AFF7 data_123 dw offset loc_735 ; xref F000:AE57
F000:AE1A B0EE data_124 dw offset loc_754 ; xref F000:AE57
F000:AE1C B1A6 data_125 dw offset loc_763 ; xref F000:AE57
F000:AE1E AEE9 data_126 dw offset loc_712 ; xref F000:AE57
F000:AE20 AFA0 data_127 dw offset loc_729 ; xref F000:AE57
F000:AE22 AF2B data_128 dw offset loc_719 ; xref F000:AE57
F000:AE24 B2FC data_129 dw offset loc_776 ; xref F000:AE57
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 13h ▒▒▒▒▒
;
; FLOPPY DISK SERVICES
;
; Note: Floppy disk services may be vectored to this routine from int 40h
; on newer systems with hard disk support inside the BIOS.
;
; Call with: ah = sub-function number
; dl = drive number (unless otherwise noted), drive a: = 0
;
; Returns: carry = 0 if function ok
; ah = status (unless otherwise noted)
; ah = 0 Function ok
; ah = 1 Invalid value passed or unsupported function
; ah = 2 Can not locate address mark
; ah = 3 Floppy write protected
; ah = 4 Sector not found
; ah = 6 Floppy changed line on (1.2 meg drives)
; ah = 8 DMA overrun occurred
; ah = 9 DMA attempted across 64K byte boundary
; ah = 0Ch Media type not found
; ah = 10h CRC read error
; ah = 20h Floppy controller failure
; ah = 40h Seek operation failed
; ah = 80h Floppy drive not ready
;
; Functions:
; ah = 0 Floppy disk controller reset
; ah = 1 Get last status
; ah = 2 Read sectors
; Call with: al = number of sectors to read
; ch/cl = starting track/starting sector
; dh = head number, head 0 = 0
; es:bx = ptr to buffer where to put data
; ah = 3 Write sectors
; Call with: al = number of sectors to write
; ch/cl = starting track/starting sector
; dh = head number, head 0 = 0
; es:bx = ptr to buffer where to get data
; Return: al = number of sectors written
; ah = 4 Verify sectors
; Call with: al = number of sectors to compare
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 146
; ch/cl = starting track/starting sector
; dh = head number, head 0 = 0
; es:bx = ptr to buffer where to compare data
; Return: al = number of sectors checked
; ah = 5 Format track
; Call with: al = number of sectors to format
; ch/cl = starting track/starting sector
; dh = head number, head 0 = 0
; es:bx = ptr to table of address fields
; ah = 8 Get drive information (not supported by all systems)
; Returns: ax/bh = 0 size dia. size dia.
; bl = drive type: 1=360K 5.25 3=720K 3.5
; 2=1.2M 5.25 4=1.4M 3.5
; cx bits 7&6, 15-8 = number of tracks, 0=1 track
; bits 5-0 = number of sectors per track
; dh/dl = # of heads/number of floppy drives
; es:di = ptr to floppy parameter table
; ah = 15h Get drive type (not supported by all systems)
; Returns: ah = 0 no drive
; ah = 1/2 floppy changed line not/is available
; ah = 16h Get changed floppy status (not supported by all systems)
; Returns: ah = 0 floppy in drive, carry = 0
; ah = 1 bad drive number, carry = 1
; ah = 6 floppy out of drive, carry = 1
; ah = 80h drive not ready, carry = 1
; ah = 17h Specify media type for a drive
; Call with: al = 1 use a 320/360K floppy in 360k drive
; al = 2 use a 360K floppy in a 1.2M drive
; al = 3 use a 1.2M floppy in a 1.2M drive
; al = 4 use a 720K disk in a 720K drive
; ah = 18h Prepare for format (not supported by all systems)
; Call with: cx bits 7&6, 15-8 = number of tracks, 0=1 track
; bits 5-0 = number of sectors per track
; Returns: es:di = ptr to floppy parameter table
F000:AE26 int_13h_floppy proc near ; xref F000:EC59
F000:AE26 FB sti ; Enable interrupts
F000:AE27 FC cld ; Clear direction
F000:AE28 50 push ax
F000:AE29 51 push cx
F000:AE2A 52 push dx
F000:AE2B 53 push bx
F000:AE2C 55 push bp
F000:AE2D 56 push si
F000:AE2E 57 push di
F000:AE2F 1E push ds
F000:AE30 06 push es
F000:AE31 55 push bp
F000:AE32 8B EC mov bp,sp
F000:AE34 6A 40 push 40h
F000:AE36 1F pop ds
F000:AE37 50 push ax
F000:AE38 8A C4 mov al,ah
F000:AE3A 3C 18 cmp al,18h
F000:AE3C 77 62 ja short loc_705 ; Jump if above
F000:AE3E 3C 05 cmp al,5
F000:AE40 76 0E jbe short loc_700 ; Jump if below or =
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 147
F000:AE42 3C 08 cmp al,8
F000:AE44 75 04 jne short loc_699 ; Jump if not equal
F000:AE46 B0 06 mov al,6
F000:AE48 EB 06 jmp short loc_700 ; (AE50)
F000:AE4A loc_699: ; xref F000:AE44
F000:AE4A 3C 15 cmp al,15h
F000:AE4C 72 52 jb short loc_705 ; Jump if below
F000:AE4E 2C 0E sub al,0Eh
F000:AE50 loc_700: ; xref F000:AE40, AE48
F000:AE50 98 cbw ; Convrt byte to word
F000:AE51 8B F8 mov di,ax
F000:AE53 58 pop ax
F000:AE54 D1 E7 shl di,1 ; Shift w/zeros fill
F000:AE56 2E: FF A5 AE10 jmp word ptr cs:data_119[di] ;*(F000:AE10=0AEAAh) 11 entries
F000:AE5B loc_701: ; xref F000:AF28, AF9D, AFF4, B0EB
; B0FA, B1A3, B1B2, B280
; B304, B3BA
F000:AE5B 8A C4 mov al,ah
F000:AE5D 9F lahf ; Load ah from flags
F000:AE5E 50 push ax
F000:AE5F 6A 40 push 40h
F000:AE61 1F pop ds
F000:AE62 8A 46 0E mov al,[bp+0Eh]
F000:AE65 3C 01 cmp al,1
F000:AE67 77 18 ja short loc_702 ; Jump if above
F000:AE69 32 E4 xor ah,ah ; Zero register
F000:AE6B BB 0090 mov bx,90h
F000:AE6E 03 D8 add bx,ax
F000:AE70 F6 07 10 test byte ptr [bx],10h
F000:AE73 74 0C jz short loc_702 ; Jump if zero
F000:AE75 B2 04 mov dl,4
F000:AE77 F6 E2 mul dl ; ax = reg * al
F000:AE79 8A C8 mov cl,al
F000:AE7B D2 E2 shl dl,cl ; Shift w/zeros fill
F000:AE7D 08 16 008F or hdsk_options,dl ; (0040:008F=33h)
F000:AE81 loc_702: ; xref F000:AE67, AE73
F000:AE81 58 pop ax
F000:AE82 9E sahf ; Store ah into flags
F000:AE83 8A E0 mov ah,al
F000:AE85 loc_703: ; xref F000:AEA8, AECA, AEE7
F000:AE85 88 66 13 mov [bp+13h],ah
F000:AE88 B8 0201 mov ax,201h
F000:AE8B 72 05 jc short loc_704 ; Jump if carry Set
F000:AE8D 80 66 18 FE and byte ptr [bp+18h],0FEh
F000:AE91 48 dec ax
F000:AE92 loc_704: ; xref F000:AE8B
F000:AE92 09 46 18 or [bp+18h],ax
F000:AE95 5D pop bp
F000:AE96 07 pop es
F000:AE97 1F pop ds
F000:AE98 5F pop di
F000:AE99 5E pop si
F000:AE9A 5D pop bp
F000:AE9B 5B pop bx
F000:AE9C 5A pop dx
F000:AE9D 59 pop cx
F000:AE9E 58 pop ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 148
F000:AE9F CF iret ; Interrupt return
int_13h_floppy endp
F000:AEA0 loc_705: ; xref F000:AE3C, AE4C
F000:AEA0 58 pop ax
F000:AEA1 B4 01 mov ah,1
F000:AEA3 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:AEA7 F9 stc ; Set carry flag
F000:AEA8 EB DB jmp short loc_703 ; (AE85)
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:AEAA loc_706: ; xref F000:AE10, AE57
F000:AEAA E8 001F call sub_135 ; (AECC)
F000:AEAD 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:AEB1 8A C4 mov al,ah
F000:AEB3 9F lahf ; Load ah from flags
F000:AEB4 50 push ax
F000:AEB5 1E push ds
F000:AEB6 33 F6 xor si,si ; Zero register
F000:AEB8 8E DE mov ds,si
F000:AEBA C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:AEBE 8A 4C 02 mov cl,[si+2]
F000:AEC1 1F pop ds
F000:AEC2 88 0E 0040 mov dsk_motor_tmr,cl ; (0040:0040=9Fh)
F000:AEC6 58 pop ax
F000:AEC7 9E sahf ; Store ah into flags
F000:AEC8 8A E0 mov ah,al
F000:AECA EB B9 jmp short loc_703 ; (AE85)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:AEAA, BA50
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_135 proc near
F000:AECC 80 26 003E F0 and dsk_recal_stat,0F0h ; (0040:003E=0)
F000:AED1 E9 0D4F jmp loc_906 ; (BC23)
sub_135 endp
F000:AED4 loc_707: ; xref F000:BC6B
F000:AED4 72 07 jc short loc_ret_709 ; Jump if carry Set
F000:AED6 E9 0DCE jmp loc_913 ; (BCA7)
F000:AED9 loc_708: ; xref F000:BCC6
F000:AED9 72 02 jc short loc_ret_709 ; Jump if carry Set
F000:AEDB 32 E4 xor ah,ah ; Zero register
F000:AEDD loc_ret_709: ; xref F000:AED4, AED9
F000:AEDD C3 retn
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:AEDE loc_710: ; xref F000:AE12, AE57
F000:AEDE 8A 26 0041 mov ah,dsk_ret_code ; (0040:0041=0)
F000:AEE2 0A E4 or ah,ah ; Zero ?
F000:AEE4 74 01 jz short loc_711 ; Jump if zero
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 149
F000:AEE6 F9 stc ; Set carry flag
F000:AEE7 loc_711: ; xref F000:AEE4
F000:AEE7 EB 9C jmp short loc_703 ; (AE85)
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:AEE9 loc_712: ; xref F000:AE1E, AE57
F000:AEE9 80 FA 01 cmp dl,1
F000:AEEC 76 09 jbe short loc_713 ; Jump if below or =
F000:AEEE B4 01 mov ah,1
F000:AEF0 F9 stc ; Set carry flag
F000:AEF1 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:AEF5 EB 31 jmp short loc_718 ; (AF28)
F000:AEF7 loc_713: ; xref F000:AEEC
F000:AEF7 EB 03 jmp short loc_714 ; (AEFC)
F000:AEF9 90 7F 24 db 90h, 7Fh, 24h
F000:AEFC loc_714: ; xref F000:AEF7
F000:AEFC BB 0090 mov bx,90h
F000:AEFF 32 F6 xor dh,dh ; Zero register
F000:AF01 03 DA add bx,dx
F000:AF03 8A 1F mov bl,[bx]
F000:AF05 0A DB or bl,bl ; Zero ?
F000:AF07 75 04 jnz short loc_715 ; Jump if not zero
F000:AF09 32 E4 xor ah,ah ; Zero register
F000:AF0B EB 15 jmp short loc_717 ; (AF22)
F000:AF0D loc_715: ; xref F000:AF07
F000:AF0D 80 E3 07 and bl,7
F000:AF10 74 0E jz short loc_716 ; Jump if zero
F000:AF12 80 FB 03 cmp bl,3
F000:AF15 74 09 je short loc_716 ; Jump if equal
F000:AF17 E8 0DAF call sub_162 ; (BCC9)
F000:AF1A 73 04 jnc short loc_716 ; Jump if carry=0
F000:AF1C B4 02 mov ah,2
F000:AF1E EB 02 jmp short loc_717 ; (AF22)
F000:AF20 loc_716: ; xref F000:AF10, AF15, AF1A
F000:AF20 B4 01 mov ah,1
F000:AF22 loc_717: ; xref F000:AF0B, AF1E
F000:AF22 F8 clc ; Clear carry flag
F000:AF23 C6 06 0041 00 mov dsk_ret_code,0 ; (0040:0041=0)
F000:AF28 loc_718: ; xref F000:AEF5
F000:AF28 E9 FF30 jmp loc_701 ; (AE5B)
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:AF2B loc_719: ; xref F000:AE22, AE57
F000:AF2B 32 E4 xor ah,ah ; Zero register
F000:AF2D 80 FA 01 cmp dl,1
F000:AF30 76 09 jbe short loc_722 ; Jump if below or =
F000:AF32 loc_720: ; xref F000:AF3D, AF41
F000:AF32 B4 01 mov ah,1
F000:AF34 loc_721: ; xref F000:AF76, AF7B, AF96
F000:AF34 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:AF38 F9 stc ; Set carry flag
F000:AF39 EB 62 jmp short loc_728 ; (AF9D)
F000:AF3B loc_722: ; xref F000:AF30
F000:AF3B 3C 00 cmp al,0
F000:AF3D 74 F3 je loc_720 ; Jump if equal
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 150
F000:AF3F 3C 04 cmp al,4
F000:AF41 77 EF ja loc_720 ; Jump if above
F000:AF43 BB 0090 mov bx,90h
F000:AF46 32 F6 xor dh,dh ; Zero register
F000:AF48 03 DA add bx,dx
F000:AF4A 3C 01 cmp al,1
F000:AF4C 75 0A jne short loc_723 ; Jump if not equal
F000:AF4E C6 07 93 mov byte ptr [bx],93h
F000:AF51 C6 06 0041 00 mov dsk_ret_code,0 ; (0040:0041=0)
F000:AF56 EB 3C jmp short loc_727 ; (AF94)
F000:AF58 loc_723: ; xref F000:AF4C
F000:AF58 8B C8 mov cx,ax
F000:AF5A E8 0D6C call sub_162 ; (BCC9)
F000:AF5D 73 1E jnc short loc_724 ; Jump if carry=0
F000:AF5F 53 push bx
F000:AF60 E8 09E5 call sub_147 ; (B948)
F000:AF63 5E pop si
F000:AF64 56 push si
F000:AF65 E8 0AC2 call sub_151 ; (BA2A)
F000:AF68 5B pop bx
F000:AF69 80 FC 06 cmp ah,6
F000:AF6C 76 0F jbe short loc_724 ; Jump if below or =
F000:AF6E 80 FC 80 cmp ah,80h
F000:AF71 75 0A jne short loc_724 ; Jump if not equal
F000:AF73 80 3F 97 cmp byte ptr [bx],97h
F000:AF76 74 BC je loc_721 ; Jump if equal
F000:AF78 C6 07 61 mov byte ptr [bx],61h ; 'a'
F000:AF7B EB B7 jmp short loc_721 ; (AF34)
F000:AF7D loc_724: ; xref F000:AF5D, AF6C, AF71
F000:AF7D 80 F9 04 cmp cl,4
F000:AF80 75 05 jne short loc_725 ; Jump if not equal
F000:AF82 C6 07 97 mov byte ptr [bx],97h
F000:AF85 EB 0D jmp short loc_727 ; (AF94)
F000:AF87 loc_725: ; xref F000:AF80
F000:AF87 80 F9 02 cmp cl,2
F000:AF8A 75 05 jne short loc_726 ; Jump if not equal
F000:AF8C C6 07 74 mov byte ptr [bx],74h ; 't'
F000:AF8F EB 03 jmp short loc_727 ; (AF94)
F000:AF91 loc_726: ; xref F000:AF8A
F000:AF91 C6 07 15 mov byte ptr [bx],15h
F000:AF94 loc_727: ; xref F000:AF56, AF85, AF8F
F000:AF94 0A E4 or ah,ah ; Zero ?
F000:AF96 75 9C jnz loc_721 ; Jump if not zero
F000:AF98 C6 06 0041 00 mov byte ptr ds:data_37e,0 ; (C000:0041=0)
F000:AF9D loc_728: ; xref F000:AF39
F000:AF9D E9 FEBB jmp loc_701 ; (AE5B)
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:AFA0 loc_729: ; xref F000:AE20, AE57
F000:AFA0 80 FA 01 cmp dl,1
F000:AFA3 76 05 jbe short loc_731 ; Jump if below or =
F000:AFA5 B4 01 mov ah,1
F000:AFA7 loc_730: ; xref F000:AFB6
F000:AFA7 F9 stc ; Set carry flag
F000:AFA8 EB 31 jmp short loc_734 ; (AFDB)
F000:AFAA loc_731: ; xref F000:AFA3
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 151
F000:AFAA 32 F6 xor dh,dh ; Zero register
F000:AFAC BB 0090 mov bx,90h
F000:AFAF 03 DA add bx,dx
F000:AFB1 80 3F 00 cmp byte ptr [bx],0
F000:AFB4 B4 80 mov ah,80h
F000:AFB6 74 EF jz loc_730 ; Jump if zero
F000:AFB8 8A 27 mov ah,[bx]
F000:AFBA 80 E4 07 and ah,7
F000:AFBD 74 05 jz short loc_732 ; Jump if zero
F000:AFBF 80 FC 03 cmp ah,3
F000:AFC2 75 05 jne short loc_733 ; Jump if not equal
F000:AFC4 loc_732: ; xref F000:AFBD, AFCC, AFD7
F000:AFC4 B4 06 mov ah,6
F000:AFC6 F9 stc ; Set carry flag
F000:AFC7 EB 12 jmp short loc_734 ; (AFDB)
F000:AFC9 loc_733: ; xref F000:AFC2
F000:AFC9 E8 0CFD call sub_162 ; (BCC9)
F000:AFCC 73 F6 jnc loc_732 ; Jump if carry=0
F000:AFCE E8 0977 call sub_147 ; (B948)
F000:AFD1 BA 03F7 mov dx,3F7h
F000:AFD4 EC in al,dx ; port 3F7h, dsk0 status C
F000:AFD5 D0 E0 shl al,1 ; Shift w/zeros fill
F000:AFD7 72 EB jc loc_732 ; Jump if carry Set
F000:AFD9 32 E4 xor ah,ah ; Zero register
F000:AFDB loc_734: ; xref F000:AFA8, AFC7
F000:AFDB 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:AFDF 50 push ax
F000:AFE0 56 push si
F000:AFE1 1E push ds
F000:AFE2 BE 0000 mov si,0
F000:AFE5 8E DE mov ds,si
F000:AFE7 C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:AFEB 8A 44 02 mov al,[si+2]
F000:AFEE 1F pop ds
F000:AFEF A2 0040 mov dsk_motor_tmr,al ; (0040:0040=8Bh)
F000:AFF2 5E pop si
F000:AFF3 58 pop ax
F000:AFF4 E9 FE64 jmp loc_701 ; (AE5B)
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:AFF7 loc_735: ; xref F000:AE14, AE16, AE18, AE57
F000:AFF7 80 FA 01 cmp dl,1
F000:AFFA 76 0C jbe short loc_737 ; Jump if below or =
F000:AFFC B4 01 mov ah,1
F000:AFFE loc_736: ; xref F000:B01F, B050
F000:AFFE 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:B002 32 C0 xor al,al ; Zero register
F000:B004 F9 stc ; Set carry flag
F000:B005 E9 00E0 jmp loc_753 ; (B0E8)
F000:B008 loc_737: ; xref F000:AFFA
F000:B008 BE 0090 mov si,90h
F000:B00B 52 push dx
F000:B00C 32 F6 xor dh,dh ; Zero register
F000:B00E 03 F2 add si,dx
F000:B010 80 3C 00 cmp byte ptr [si],0
F000:B013 5A pop dx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 152
F000:B014 75 13 jnz short loc_740 ; Jump if not zero
F000:B016 50 push ax
F000:B017 E8 406A call sub_265 ; (F084)
F000:B01A 74 05 jz short loc_739 ; Jump if zero
F000:B01C 58 pop ax
F000:B01D loc_738: ; xref F000:B024
F000:B01D B4 80 mov ah,80h
F000:B01F EB DD jmp short loc_736 ; (AFFE)
F000:B021 loc_739: ; xref F000:B01A
F000:B021 0A C0 or al,al ; Zero ?
F000:B023 58 pop ax
F000:B024 74 F7 jz loc_738 ; Jump if zero
F000:B026 C6 04 02 mov byte ptr [si],2
F000:B029 loc_740: ; xref F000:B014
F000:B029 BF 003F mov di,3Fh
F000:B02C 80 25 7F and byte ptr [di],7Fh
F000:B02F 80 FC 03 cmp ah,3
F000:B032 75 03 jne short loc_741 ; Jump if not equal
F000:B034 80 0D 80 or byte ptr [di],80h
F000:B037 loc_741: ; xref F000:B032
F000:B037 56 push si
F000:B038 E8 4049 call sub_265 ; (F084)
F000:B03B 75 07 jnz short loc_742 ; Jump if not zero
F000:B03D 3C 01 cmp al,1
F000:B03F 75 03 jne short loc_742 ; Jump if not equal
F000:B041 C6 04 93 mov byte ptr [si],93h
F000:B044 loc_742: ; xref F000:B03B, B03F
F000:B044 E8 0901 call sub_147 ; (B948)
F000:B047 E8 09E0 call sub_151 ; (BA2A)
F000:B04A 5E pop si
F000:B04B 73 0E jnc short loc_744 ; Jump if carry=0
F000:B04D loc_743: ; xref F000:B063, B08C, B0B1
F000:B04D E8 0979 call sub_148 ; (B9C9)
F000:B050 EB AC jmp short loc_736 ; (AFFE)
F000:B052 3C 03 75 EE C6 04 db 3Ch, 3, 75h, 0EEh, 0C6h, 4
F000:B058 97 EB E9 db 97h, 0EBh, 0E9h
F000:B05B loc_744: ; xref F000:B04B
F000:B05B F6 04 10 test byte ptr [si],10h
F000:B05E 75 07 jnz short loc_745 ; Jump if not zero
F000:B060 E8 0774 call sub_146 ; (B7D7)
F000:B063 72 E8 jc loc_743 ; Jump if carry Set
F000:B065 EB 03 jmp short loc_746 ; (B06A)
F000:B067 loc_745: ; xref F000:B05E
F000:B067 E8 098A call sub_149 ; (B9F4)
F000:B06A loc_746: ; xref F000:B065
F000:B06A BE 0090 mov si,90h
F000:B06D 52 push dx
F000:B06E 32 F6 xor dh,dh ; Zero register
F000:B070 03 F2 add si,dx
F000:B072 5A pop dx
F000:B073 B8 DF03 mov ax,0DF03h
F000:B076 80 3C 17 cmp byte ptr [si],17h
F000:B079 75 02 jne short loc_747 ; Jump if not equal
F000:B07B B4 BF mov ah,0BFh
F000:B07D loc_747: ; xref F000:B079
F000:B07D 8B F0 mov si,ax
F000:B07F BF 0002 mov di,2
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 153
F000:B082 B5 03 mov ch,3
F000:B084 80 0E 003E 80 or byte ptr ds:data_34e,80h ; (C000:003E=39h)
F000:B089 E8 0AB0 call sub_155 ; (BB3C)
F000:B08C 72 BF jc loc_743 ; Jump if carry Set
F000:B08E 8B 46 12 mov ax,[bp+12h]
F000:B091 32 E4 xor ah,ah ; Zero register
F000:B093 1E push ds
F000:B094 33 F6 xor si,si ; Zero register
F000:B096 8E DE mov ds,si
F000:B098 C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:B09C 8A 4C 03 mov cl,[si+3]
F000:B09F D2 E0 shl al,cl ; Shift w/zeros fill
F000:B0A1 B1 80 mov cl,80h
F000:B0A3 F6 E1 mul cl ; ax = reg * al
F000:B0A5 1F pop ds
F000:B0A6 48 dec ax
F000:B0A7 8B C8 mov cx,ax
F000:B0A9 E8 0A11 call sub_153 ; (BABD)
F000:B0AC 73 05 jnc short loc_748 ; Jump if carry=0
F000:B0AE 8B 4E 10 mov cx,[bp+10h]
F000:B0B1 EB 9A jmp short loc_743 ; (B04D)
F000:B0B3 loc_748: ; xref F000:B0AC
F000:B0B3 8B 46 12 mov ax,[bp+12h]
F000:B0B6 80 FC 02 cmp ah,2
F000:B0B9 75 04 jne short loc_749 ; Jump if not equal
F000:B0BB B4 46 mov ah,46h ; 'F'
F000:B0BD EB 09 jmp short loc_750 ; (B0C8)
F000:B0BF loc_749: ; xref F000:B0B9
F000:B0BF 80 FC 03 cmp ah,3
F000:B0C2 B4 4A mov ah,4Ah ; 'J'
F000:B0C4 74 02 jz short loc_750 ; Jump if zero
F000:B0C6 B4 42 mov ah,42h ; 'B'
F000:B0C8 loc_750: ; xref F000:B0BD, B0C4
F000:B0C8 E8 09B1 call sub_152 ; (BA7C)
F000:B0CB 8B 46 12 mov ax,[bp+12h]
F000:B0CE 8B 4E 10 mov cx,[bp+10h]
F000:B0D1 E9 062C jmp loc_831 ; (B700)
F000:B0D4 loc_751: ; xref F000:B7D4
F000:B0D4 E8 08F2 call sub_148 ; (B9C9)
F000:B0D7 0A C0 or al,al ; Zero ?
F000:B0D9 74 04 jz short loc_752 ; Jump if zero
F000:B0DB 2A D9 sub bl,cl
F000:B0DD 8A C3 mov al,bl
F000:B0DF loc_752: ; xref F000:B0D9
F000:B0DF 8A 26 0041 mov ah,ds:data_37e ; (C000:0041=0)
F000:B0E3 0A E4 or ah,ah ; Zero ?
F000:B0E5 74 01 jz short loc_753 ; Jump if zero
F000:B0E7 F9 stc ; Set carry flag
F000:B0E8 loc_753: ; xref F000:B005, B0E5
F000:B0E8 88 46 12 mov [bp+12h],al
F000:B0EB E9 FD6D jmp loc_701 ; (AE5B)
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:B0EE loc_754: ; xref F000:AE1A, AE57
F000:B0EE 80 FA 01 cmp dl,1
F000:B0F1 76 0A jbe short loc_756 ; Jump if below or =
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 154
F000:B0F3 B4 01 mov ah,1
F000:B0F5 loc_755: ; xref F000:B10B, B11E
F000:B0F5 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:B0F9 F9 stc ; Set carry flag
F000:B0FA E9 FD5E jmp loc_701 ; (AE5B)
F000:B0FD loc_756: ; xref F000:B0F1
F000:B0FD BE 0090 mov si,90h
F000:B100 52 push dx
F000:B101 32 F6 xor dh,dh ; Zero register
F000:B103 03 F2 add si,dx
F000:B105 5A pop dx
F000:B106 80 3C 00 cmp byte ptr [si],0
F000:B109 B4 80 mov ah,80h
F000:B10B 74 E8 jz loc_755 ; Jump if zero
F000:B10D BF 003F mov di,3Fh
F000:B110 80 0D 80 or byte ptr [di],80h
F000:B113 E8 0832 call sub_147 ; (B948)
F000:B116 E8 0911 call sub_151 ; (BA2A)
F000:B119 73 05 jnc short loc_758 ; Jump if carry=0
F000:B11B loc_757: ; xref F000:B13F
F000:B11B E8 08AB call sub_148 ; (B9C9)
F000:B11E EB D5 jmp short loc_755 ; (B0F5)
F000:B120 loc_758: ; xref F000:B119
F000:B120 E8 08D1 call sub_149 ; (B9F4)
F000:B123 E8 0B81 call sub_161 ; (BCA7)
F000:B126 1E push ds
F000:B127 33 F6 xor si,si ; Zero register
F000:B129 8E DE mov ds,si
F000:B12B C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:B12F 8A 44 04 mov al,[si+4]
F000:B132 1F pop ds
F000:B133 32 E4 xor ah,ah ; Zero register
F000:B135 B1 04 mov cl,4
F000:B137 F6 E1 mul cl ; ax = reg * al
F000:B139 8B C8 mov cx,ax
F000:B13B 49 dec cx
F000:B13C E8 097E call sub_153 ; (BABD)
F000:B13F 72 DA jc loc_757 ; Jump if carry Set
F000:B141 B4 4A mov ah,4Ah ; 'J'
F000:B143 E8 0936 call sub_152 ; (BA7C)
F000:B146 8B 4E 10 mov cx,[bp+10h]
F000:B149 E8 04B7 call sub_144 ; (B603)
F000:B14C 73 0D jnc short loc_760 ; Jump if carry=0
F000:B14E loc_759: ; xref F000:B183
F000:B14E BB 0042 mov bx,42h
F000:B151 B9 0007 mov cx,7
F000:B154 50 push ax
F000:B155 E8 0A3E call sub_157 ; (BB96)
F000:B158 58 pop ax
F000:B159 EB 38 jmp short loc_761 ; (B193)
F000:B15B loc_760: ; xref F000:B14C
F000:B15B C0 E6 02 shl dh,2 ; Shift w/zeros fill
F000:B15E 0A F2 or dh,dl
F000:B160 B2 CD mov dl,0CDh
F000:B162 1E push ds
F000:B163 33 F6 xor si,si ; Zero register
F000:B165 8E DE mov ds,si
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 155
F000:B167 C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:B16B 50 push ax
F000:B16C 8B 44 07 mov ax,[si+7]
F000:B16F 89 46 00 mov [bp],ax
F000:B172 58 pop ax
F000:B173 8B 7C 03 mov di,[si+3]
F000:B176 1F pop ds
F000:B177 8B F2 mov si,dx
F000:B179 B5 06 mov ch,6
F000:B17B 80 26 003E 7F and dsk_recal_stat,7Fh ; (0040:003E=0)
F000:B180 E8 09B9 call sub_155 ; (BB3C)
F000:B183 72 C9 jc loc_759 ; Jump if carry Set
F000:B185 BB 0042 mov bx,42h
F000:B188 B9 0007 mov cx,7
F000:B18B E8 0A08 call sub_157 ; (BB96)
F000:B18E 72 03 jc short loc_761 ; Jump if carry Set
F000:B190 E8 0A50 call sub_159 ; (BBE3)
F000:B193 loc_761: ; xref F000:B159, B18E
F000:B193 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:B197 E8 082F call sub_148 ; (B9C9)
F000:B19A 8A 26 0041 mov ah,dsk_ret_code ; (0040:0041=0)
F000:B19E 0A E4 or ah,ah ; Zero ?
F000:B1A0 74 01 jz short loc_762 ; Jump if zero
F000:B1A2 F9 stc ; Set carry flag
F000:B1A3 loc_762: ; xref F000:B1A0
F000:B1A3 E9 FCB5 jmp loc_701 ; (AE5B)
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:B1A6 loc_763: ; xref F000:AE1C, AE57
F000:B1A6 80 FA 80 cmp dl,80h
F000:B1A9 72 0A jb short loc_764 ; Jump if below
F000:B1AB B4 01 mov ah,1
F000:B1AD 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:B1B1 F9 stc ; Set carry flag
F000:B1B2 E9 FCA6 jmp loc_701 ; (AE5B)
F000:B1B5 loc_764: ; xref F000:B1A9
F000:B1B5 33 FF xor di,di ; Zero register
F000:B1B7 33 F6 xor si,si ; Zero register
F000:B1B9 32 F6 xor dh,dh ; Zero register
F000:B1BB A0 0010 mov al,byte ptr equip_bits ; (0040:0010=61h)
F000:B1BE 24 C1 and al,0C1h
F000:B1C0 BF 0002 mov di,2
F000:B1C3 3C 41 cmp al,41h ; 'A'
F000:B1C5 74 08 je short loc_765 ; Jump if equal
F000:B1C7 4F dec di
F000:B1C8 3C 01 cmp al,1
F000:B1CA 74 03 je short loc_765 ; Jump if equal
F000:B1CC E9 00B4 jmp loc_773 ; (B283)
F000:B1CF loc_765: ; xref F000:B1C5, B1CA
F000:B1CF 80 FA 01 cmp dl,1
F000:B1D2 76 03 jbe short loc_766 ; Jump if below or =
F000:B1D4 E9 00AE jmp loc_774 ; (B285)
F000:B1D7 loc_766: ; xref F000:B1D2
F000:B1D7 B0 0E mov al,0Eh
F000:B1D9 E8 3CC3 call sub_257 ; (EE9F)
F000:B1DC A8 C0 test al,0C0h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 156
F000:B1DE 75 41 jnz short loc_769 ; Jump if not zero
F000:B1E0 B0 10 mov al,10h
F000:B1E2 E8 3CBA call sub_257 ; (EE9F)
F000:B1E5 0A D2 or dl,dl ; Zero ?
F000:B1E7 75 04 jnz short loc_767 ; Jump if not zero
F000:B1E9 B1 04 mov cl,4
F000:B1EB D2 E8 shr al,cl ; Shift w/zeros fill
F000:B1ED loc_767: ; xref F000:B1E7
F000:B1ED 24 0F and al,0Fh
F000:B1EF 74 30 jz short loc_769 ; Jump if zero
F000:B1F1 3C 04 cmp al,4
F000:B1F3 77 2C ja short loc_769 ; Jump if above
F000:B1F5 32 E4 xor ah,ah ; Zero register
F000:B1F7 8B F0 mov si,ax
F000:B1F9 8A F0 mov dh,al
F000:B1FB BB 0090 mov bx,90h
F000:B1FE 02 DA add bl,dl
F000:B200 8A 07 mov al,[bx]
F000:B202 A8 10 test al,10h
F000:B204 75 44 jnz short loc_771 ; Jump if not zero
F000:B206 83 FE 01 cmp si,1
F000:B209 B0 93 mov al,93h
F000:B20B 74 10 jz short loc_768 ; Jump if zero
F000:B20D 83 FE 02 cmp si,2
F000:B210 B0 02 mov al,2
F000:B212 74 09 jz short loc_768 ; Jump if zero
F000:B214 83 FE 03 cmp si,3
F000:B217 B0 97 mov al,97h
F000:B219 74 02 jz short loc_768 ; Jump if zero
F000:B21B B0 07 mov al,7
F000:B21D loc_768: ; xref F000:B20B, B212, B219
F000:B21D 88 07 mov [bx],al
F000:B21F EB 29 jmp short loc_771 ; (B24A)
F000:B221 loc_769: ; xref F000:B1DE, B1EF, B1F3
F000:B221 BB 0090 mov bx,90h
F000:B224 02 DA add bl,dl
F000:B226 8A 07 mov al,[bx]
F000:B228 A8 10 test al,10h
F000:B22A 74 67 jz short loc_775 ; Jump if zero
F000:B22C 8A E0 mov ah,al
F000:B22E 24 C0 and al,0C0h
F000:B230 3C 80 cmp al,80h
F000:B232 BE 0002 mov si,2
F000:B235 75 0B jnz short loc_770 ; Jump if not zero
F000:B237 F6 C4 04 test ah,4
F000:B23A BE 0001 mov si,1
F000:B23D 74 0B jz short loc_771 ; Jump if zero
F000:B23F BE 0004 mov si,4
F000:B242 loc_770: ; xref F000:B235
F000:B242 F6 C4 07 test ah,7
F000:B245 74 03 jz short loc_771 ; Jump if zero
F000:B247 BE 0004 mov si,4
F000:B24A loc_771: ; xref F000:B204, B21F, B23D, B245
; B2A5
F000:B24A 8B DF mov bx,di
F000:B24C 8B FE mov di,si
F000:B24E 4F dec di
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 157
F000:B24F 03 FF add di,di
F000:B251 2E: 8B 85 B2AB mov ax,cs:data_130[di] ; (F000:B2AB=2709h)
F000:B256 C6 46 0F 01 mov byte ptr [bp+0Fh],1
F000:B25A 2E: 8B BD B2B3 mov di,cs:data_131[di] ; (F000:B2B3=0B2BBh)
F000:B25F 0E push cs
F000:B260 07 pop es
F000:B261 loc_772: ; xref F000:B291
F000:B261 88 5E 0E mov [bp+0Eh],bl
F000:B264 88 66 11 mov [bp+11h],ah
F000:B267 88 46 10 mov [bp+10h],al
F000:B26A 88 76 0C mov [bp+0Ch],dh
F000:B26D C6 46 0D 00 mov byte ptr [bp+0Dh],0
F000:B271 8C 46 02 mov [bp+2],es
F000:B274 89 7E 06 mov [bp+6],di
F000:B277 88 26 0041 mov ds:data_37e,ah ; (C000:0041=0)
F000:B27B 33 C0 xor ax,ax ; Zero register
F000:B27D 88 46 12 mov [bp+12h],al
F000:B280 E9 FBD8 jmp loc_701 ; (AE5B)
F000:B283 loc_773: ; xref F000:B1CC, B29C, B2A0, B2A9
F000:B283 33 FF xor di,di ; Zero register
F000:B285 loc_774: ; xref F000:B1D4
F000:B285 32 F6 xor dh,dh ; Zero register
F000:B287 33 C0 xor ax,ax ; Zero register
F000:B289 8E C0 mov es,ax
F000:B28B C6 46 0F 00 mov byte ptr [bp+0Fh],0
F000:B28F 8B DF mov bx,di
F000:B291 EB CE jmp short loc_772 ; (B261)
F000:B293 loc_775: ; xref F000:B22A
F000:B293 8B DF mov bx,di
F000:B295 B0 0E mov al,0Eh
F000:B297 E8 3C05 call sub_257 ; (EE9F)
F000:B29A A8 C0 test al,0C0h
F000:B29C 75 E5 jnz loc_773 ; Jump if not zero
F000:B29E 0B F6 or si,si ; Zero ?
F000:B2A0 74 E1 jz loc_773 ; Jump if zero
F000:B2A2 83 FE 03 cmp si,3
F000:B2A5 76 A3 jbe loc_771 ; Jump if below or =
F000:B2A7 33 F6 xor si,si ; Zero register
F000:B2A9 EB D8 jmp short loc_773 ; (B283)
F000:B2AB 2709 data_130 dw 2709h ; Data table (indexed access)
; xref F000:B252
F000:B2AD 0F 4F 09 4F 12 4F db 0Fh, 4Fh, 9, 4Fh, 12h, 4Fh
F000:B2B3 B2BB data_131 dw 0B2BBh ; Data table (indexed access)
; xref F000:B25B
F000:B2B5 C8 B2 D5 B2 E2 B2 db 0C8h, 0B2h, 0D5h, 0B2h, 0E2h, 0B2h
F000:B2BB DF 02 25 02 09 2A db 0DFh, 2, 25h, 2, 9, 2Ah
F000:B2C1 FF 50 F6 0F 08 27 db 0FFh, 50h, 0F6h, 0Fh, 8, 27h
F000:B2C7 80 DF 02 25 02 0F db 80h, 0DFh, 2, 25h, 2, 0Fh
F000:B2CD 1B FF 54 F6 0F 08 db 1Bh, 0FFh, 54h, 0F6h, 0Fh, 8
F000:B2D3 4F 00 DF 02 25 02 db 4Fh, 0, 0DFh, 2, 25h, 2
F000:B2D9 09 2A FF 50 F6 0F db 9, 2Ah, 0FFh, 50h, 0F6h, 0Fh
F000:B2DF 08 4F 80 AF 02 25 db 8, 4Fh, 80h, 0AFh, 2, 25h
F000:B2E5 02 12 1B FF 6C F6 db 2, 12h, 1Bh, 0FFh, 6Ch, 0F6h
F000:B2EB 0F 08 4F 00 DF 02 db 0Fh, 8, 4Fh, 0, 0DFh, 2
F000:B2F1 25 02 09 2A FF 50 db 25h, 2, 9, 2Ah, 0FFh, 50h
F000:B2F7 F6 0F 08 db 0F6h, 0Fh, 8
F000:B2FA 27 40 db 27h, 40h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 158
;───── Indexed Entry Point ────────────────────────────────────────────────
F000:B2FC loc_776: ; xref F000:AE24, AE57
F000:B2FC 80 FA 01 cmp dl,1
F000:B2FF 76 06 jbe short loc_778 ; Jump if below or =
F000:B301 B4 01 mov ah,1
F000:B303 loc_777: ; xref F000:B30E
F000:B303 F9 stc ; Set carry flag
F000:B304 E9 FB54 jmp loc_701 ; (AE5B)
F000:B307 loc_778: ; xref F000:B2FF
F000:B307 E8 3D7A call sub_265 ; (F084)
F000:B30A 74 04 jz short loc_780 ; Jump if zero
F000:B30C loc_779: ; xref F000:B32C, B33C, B346, B355
; B366
F000:B30C B4 0C mov ah,0Ch
F000:B30E EB F3 jmp short loc_777 ; (B303)
F000:B310 loc_780: ; xref F000:B30A
F000:B310 32 E4 xor ah,ah ; Zero register
F000:B312 8B F8 mov di,ax
F000:B314 8A 56 0E mov dl,[bp+0Eh]
F000:B317 BB 0090 mov bx,90h
F000:B31A 32 F6 xor dh,dh ; Zero register
F000:B31C 03 DA add bx,dx
F000:B31E 3C 01 cmp al,1
F000:B320 75 0F jne short loc_781 ; Jump if not equal
F000:B322 8B 4E 10 mov cx,[bp+10h]
F000:B325 81 F9 2709 cmp cx,2709h
F000:B329 BE B2BB mov si,0B2BBh
F000:B32C 75 DE jnz loc_779 ; Jump if not zero
F000:B32E E9 008C jmp loc_786 ; (B3BD)
F000:B331 loc_781: ; xref F000:B320
F000:B331 3C 03 cmp al,3
F000:B333 75 0B jne short loc_782 ; Jump if not equal
F000:B335 8B 4E 10 mov cx,[bp+10h]
F000:B338 81 F9 4F09 cmp cx,4F09h
F000:B33C 75 CE jne loc_779 ; Jump if not equal
F000:B33E EB 28 jmp short loc_784 ; (B368)
F000:B340 loc_782: ; xref F000:B333
F000:B340 3C 04 cmp al,4
F000:B342 74 15 je short loc_783 ; Jump if equal
F000:B344 3C 02 cmp al,2
F000:B346 75 C4 jne loc_779 ; Jump if not equal
F000:B348 8B 4E 10 mov cx,[bp+10h]
F000:B34B 81 F9 4F0F cmp cx,4F0Fh
F000:B34F 74 17 je short loc_784 ; Jump if equal
F000:B351 81 F9 2709 cmp cx,2709h
F000:B355 75 B5 jne loc_779 ; Jump if not equal
F000:B357 EB 0F jmp short loc_784 ; (B368)
F000:B359 loc_783: ; xref F000:B342
F000:B359 8B 4E 10 mov cx,[bp+10h]
F000:B35C 81 F9 4F12 cmp cx,4F12h
F000:B360 74 06 je short loc_784 ; Jump if equal
F000:B362 81 F9 4F09 cmp cx,4F09h
F000:B366 75 A4 jne loc_779 ; Jump if not equal
F000:B368 loc_784: ; xref F000:B33E, B34F, B357, B360
F000:B368 8B 4E 10 mov cx,[bp+10h]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 159
F000:B36B 81 F9 4F12 cmp cx,4F12h
F000:B36F B0 17 mov al,17h
F000:B371 BE B2E2 mov si,0B2E2h
F000:B374 B6 00 mov dh,0
F000:B376 74 21 jz short loc_785 ; Jump if zero
F000:B378 81 F9 4F09 cmp cx,4F09h
F000:B37C B0 97 mov al,97h
F000:B37E BE B2D5 mov si,0B2D5h
F000:B381 B6 02 mov dh,2
F000:B383 74 14 jz short loc_785 ; Jump if zero
F000:B385 81 F9 4F0F cmp cx,4F0Fh
F000:B389 B0 15 mov al,15h
F000:B38B BE B2C8 mov si,0B2C8h
F000:B38E B6 00 mov dh,0
F000:B390 74 07 jz short loc_785 ; Jump if zero
F000:B392 B0 74 mov al,74h ; 't'
F000:B394 BE B2EF mov si,0B2EFh
F000:B397 B6 01 mov dh,1
F000:B399 loc_785: ; xref F000:B376, B383, B390, B3C1
F000:B399 88 07 mov [bx],al
F000:B39B 52 push dx
F000:B39C E8 0682 call sub_150 ; (BA21)
F000:B39F 5A pop dx
F000:B3A0 8A 07 mov al,[bx]
F000:B3A2 24 C0 and al,0C0h
F000:B3A4 80 26 008B 3F and byte ptr ds:data_53e,3Fh ; (C000:008B=74h) '?'
F000:B3A9 08 06 008B or ds:data_53e,al ; (C000:008B=74h)
F000:B3AD 89 76 06 mov [bp+6],si
F000:B3B0 8C 4E 02 mov [bp+2],cs
F000:B3B3 C6 06 0041 00 mov byte ptr ds:data_37e,0 ; (C000:0041=0)
F000:B3B8 32 E4 xor ah,ah ; Zero register
F000:B3BA E9 FA9E jmp loc_701 ; (AE5B)
F000:B3BD loc_786: ; xref F000:B32E
F000:B3BD B6 02 mov dh,2
F000:B3BF B0 93 mov al,93h
F000:B3C1 EB D6 jmp short loc_785 ; (B399)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:947A
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_136 proc near
F000:B3C3 80 26 0010 3E and byte ptr ds:data_29e,3Eh ; (C000:0010=20h) '>'
F000:B3C8 80 0E 0010 01 or byte ptr ds:data_29e,1 ; (C000:0010=20h)
F000:B3CD E8 016A call sub_142 ; (B53A)
F000:B3D0 BB 003E mov bx,3Eh
F000:B3D3 33 C0 xor ax,ax ; Zero register
F000:B3D5 B9 000B mov cx,0Bh
F000:B3D8 locloop_787: ; xref F000:B3DB
F000:B3D8 88 07 mov [bx],al
F000:B3DA 43 inc bx
F000:B3DB E2 FB loop locloop_787 ; Loop if cx > 0
F000:B3DD A2 008F mov ds:data_54e,al ; (C000:008F=38h)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 160
F000:B3E0 A3 0090 mov ds:data_55e,ax ; (C000:0090=2D37h)
F000:B3E3 A3 0092 mov ds:data_57e,ax ; (C000:0092=3931h)
F000:B3E6 A3 0094 mov ds:data_58e,ax ; (C000:0094=3039h)
F000:B3E9 A2 0096 mov ds:data_59e,al ; (C000:0096=20h)
F000:B3EC B2 00 mov dl,0
F000:B3EE CD 13 int 13h ; Disk dl=drive #: ah=func a0h
; reset disk, al=return status
F000:B3F0 73 03 jnc short loc_788 ; Jump if carry=0
F000:B3F2 83 CD 01 or bp,1
F000:B3F5 loc_788: ; xref F000:B3F0
F000:B3F5 EB 00 jmp short loc_789 ; (B3F7)
F000:B3F7 loc_789: ; xref F000:B3F5
F000:B3F7 EB 00 jmp short loc_790 ; (B3F9)
F000:B3F9 loc_790: ; xref F000:B3F7
F000:B3F9 90 nop ;
F000:B3FA B6 02 mov dh,2
F000:B3FC E8 0622 call sub_150 ; (BA21)
F000:B3FF 32 F6 xor dh,dh ; Zero register
F000:B401 E8 001B call sub_137 ; (B41F)
F000:B404 FE C6 inc dh
F000:B406 E8 0016 call sub_137 ; (B41F)
F000:B409 8A 26 0091 mov ah,byte ptr ds:data_55e+1 ; (C000:0091=2Dh)
F000:B40D 0A E4 or ah,ah ; Zero ?
F000:B40F 74 05 jz short loc_791 ; Jump if zero
F000:B411 80 0E 0010 40 or byte ptr ds:data_29e,40h ; (C000:0010=20h) '@'
F000:B416 loc_791: ; xref F000:B40F
F000:B416 E8 00D3 call sub_140 ; (B4EC)
F000:B419 C6 06 003E 00 mov byte ptr ds:data_34e,0 ; (C000:003E=39h)
F000:B41E C3 retn
sub_136 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B401, B406
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_137 proc near
F000:B41F B9 0002 mov cx,2
F000:B422 locloop_792: ; xref F000:B42C
F000:B422 8A D6 mov dl,dh
F000:B424 E8 0521 call sub_147 ; (B948)
F000:B427 E8 0176 call sub_143 ; (B5A0)
F000:B42A 73 04 jnc short loc_793 ; Jump if carry=0
F000:B42C E2 F4 loop locloop_792 ; Loop if cx > 0
F000:B42E EB 55 jmp short loc_ret_799 ; (B485)
F000:B430 loc_793: ; xref F000:B42A
F000:B430 B2 0F mov dl,0Fh
F000:B432 8B F2 mov si,dx
F000:B434 BF 0030 mov di,30h
F000:B437 E8 004C call sub_138 ; (B486)
F000:B43A 72 49 jc short loc_ret_799 ; Jump if carry Set
F000:B43C BF 000A mov di,0Ah
F000:B43F loc_794: ; xref F000:B456
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 161
F000:B43F B2 0F mov dl,0Fh
F000:B441 8B F2 mov si,dx
F000:B443 E8 0040 call sub_138 ; (B486)
F000:B446 72 3D jc short loc_ret_799 ; Jump if carry Set
F000:B448 B2 04 mov dl,4
F000:B44A 8B F2 mov si,dx
F000:B44C E8 007F call sub_139 ; (B4CE)
F000:B44F 72 34 jc short loc_ret_799 ; Jump if carry Set
F000:B451 0A ED or ch,ch ; Zero ?
F000:B453 74 05 jz short loc_795 ; Jump if zero
F000:B455 4F dec di
F000:B456 79 E7 jns loc_794 ; Jump if not sign
F000:B458 EB 2B jmp short loc_ret_799 ; (B485)
F000:B45A loc_795: ; xref F000:B453
F000:B45A 8A DE mov bl,dh
F000:B45C 32 FF xor bh,bh ; Zero register
F000:B45E C6 87 0090 93 mov byte ptr ds:data_55e[bx],93h ; (C000:0090=37h)
F000:B463 B5 04 mov ch,4
F000:B465 0B FF or di,di ; Zero ?
F000:B467 75 07 jnz short loc_796 ; Jump if not zero
F000:B469 C6 87 0090 02 mov byte ptr ds:data_55e[bx],2 ; (C000:0090=37h)
F000:B46E B5 01 mov ch,1
F000:B470 loc_796: ; xref F000:B467
F000:B470 B0 04 mov al,4
F000:B472 F6 E6 mul dh ; ax = reg * al
F000:B474 8A C8 mov cl,al
F000:B476 D2 E5 shl ch,cl ; Shift w/zeros fill
F000:B478 08 2E 008F or ds:data_54e,ch ; (C000:008F=38h)
F000:B47C 0B FF or di,di ; Zero ?
F000:B47E 75 05 jnz short loc_ret_799 ; Jump if not zero
F000:B480 EB 00 jmp short loc_797 ; (B482)
F000:B482 loc_797: ; xref F000:B480
F000:B482 EB 00 jmp short loc_798 ; (B484)
F000:B484 loc_798: ; xref F000:B482
F000:B484 90 nop ;
F000:B485 loc_ret_799: ; xref F000:B42E, B43A, B446, B44F
; B458, B47E
F000:B485 C3 retn
sub_137 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B437, B443
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_138 proc near
F000:B486 80 26 003E 7F and byte ptr ds:data_34e,7Fh ; (C000:003E=39h)
F000:B48B 8B C6 mov ax,si
F000:B48D 8A E0 mov ah,al
F000:B48F E8 06D7 call sub_156 ; (BB69)
F000:B492 72 39 jc short loc_ret_800 ; Jump if carry Set
F000:B494 8B C6 mov ax,si
F000:B496 E8 06D0 call sub_156 ; (BB69)
F000:B499 72 32 jc short loc_ret_800 ; Jump if carry Set
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 162
F000:B49B 8B C7 mov ax,di
F000:B49D 8A E0 mov ah,al
F000:B49F E8 06C7 call sub_156 ; (BB69)
F000:B4A2 72 29 jc short loc_ret_800 ; Jump if carry Set
F000:B4A4 B8 9001 mov ax,9001h
F000:B4A7 CD 15 int 15h ; General services, ah=func 90h
; device busy, al=type
F000:B4A9 72 22 jc short loc_ret_800 ; Jump if carry Set
F000:B4AB E8 0828 call sub_163 ; (BCD6)
F000:B4AE 72 1D jc short loc_ret_800 ; Jump if carry Set
F000:B4B0 B4 08 mov ah,8
F000:B4B2 E8 06B4 call sub_156 ; (BB69)
F000:B4B5 72 16 jc short loc_ret_800 ; Jump if carry Set
F000:B4B7 E8 0700 call sub_158 ; (BBBA)
F000:B4BA 72 11 jc short loc_ret_800 ; Jump if carry Set
F000:B4BC 8A D8 mov bl,al
F000:B4BE E8 06F9 call sub_158 ; (BBBA)
F000:B4C1 72 0A jc short loc_ret_800 ; Jump if carry Set
F000:B4C3 80 E3 60 and bl,60h ; '`'
F000:B4C6 80 FB 60 cmp bl,60h ; '`'
F000:B4C9 F8 clc ; Clear carry flag
F000:B4CA 75 01 jnz short loc_ret_800 ; Jump if not zero
F000:B4CC F9 stc ; Set carry flag
F000:B4CD loc_ret_800: ; xref F000:B492, B499, B4A2, B4A9
; B4AE, B4B5, B4BA, B4C1
; B4CA
F000:B4CD C3 retn
sub_138 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B44C
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_139 proc near
F000:B4CE 8B C6 mov ax,si
F000:B4D0 8A E0 mov ah,al
F000:B4D2 E8 0694 call sub_156 ; (BB69)
F000:B4D5 72 14 jc short loc_ret_801 ; Jump if carry Set
F000:B4D7 8B C6 mov ax,si
F000:B4D9 E8 068D call sub_156 ; (BB69)
F000:B4DC 72 0D jc short loc_ret_801 ; Jump if carry Set
F000:B4DE E8 06D9 call sub_158 ; (BBBA)
F000:B4E1 72 08 jc short loc_ret_801 ; Jump if carry Set
F000:B4E3 B5 FF mov ch,0FFh
F000:B4E5 A8 10 test al,10h
F000:B4E7 74 02 jz short loc_ret_801 ; Jump if zero
F000:B4E9 32 ED xor ch,ch ; Zero register
F000:B4EB loc_ret_801: ; xref F000:B4D5, B4DC, B4E1, B4E7
F000:B4EB C3 retn
sub_139 endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 163
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B416
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_140 proc near
F000:B4EC BE 0090 mov si,90h
F000:B4EF B0 0E mov al,0Eh
F000:B4F1 E8 39AB call sub_257 ; (EE9F)
F000:B4F4 A8 C0 test al,0C0h
F000:B4F6 75 1C jnz short loc_ret_802 ; Jump if not zero
F000:B4F8 B0 10 mov al,10h
F000:B4FA E8 39A2 call sub_257 ; (EE9F)
F000:B4FD 8A E0 mov ah,al
F000:B4FF B1 04 mov cl,4
F000:B501 D2 E8 shr al,cl ; Shift w/zeros fill
F000:B503 24 0F and al,0Fh
F000:B505 B1 00 mov cl,0
F000:B507 E8 000B call sub_141 ; (B515)
F000:B50A 8A C4 mov al,ah
F000:B50C 24 0F and al,0Fh
F000:B50E 46 inc si
F000:B50F B1 04 mov cl,4
F000:B511 E8 0001 call sub_141 ; (B515)
F000:B514 loc_ret_802: ; xref F000:B4F6
F000:B514 C3 retn
sub_140 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B507, B511
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_141 proc near
F000:B515 80 3C 00 cmp byte ptr [si],0
F000:B518 74 1F je short loc_ret_806 ; Jump if equal
F000:B51A 80 3C 93 cmp byte ptr [si],93h
F000:B51D 74 1A je short loc_ret_806 ; Jump if equal
F000:B51F 3C 03 cmp al,3
F000:B521 75 07 jne short loc_803 ; Jump if not equal
F000:B523 C6 04 97 mov byte ptr [si],97h
F000:B526 B0 04 mov al,4
F000:B528 EB 09 jmp short loc_805 ; (B533)
F000:B52A loc_803: ; xref F000:B521
F000:B52A 3C 04 cmp al,4
F000:B52C 75 03 jne short loc_804 ; Jump if not equal
F000:B52E C6 04 07 mov byte ptr [si],7
F000:B531 loc_804: ; xref F000:B52C
F000:B531 B0 02 mov al,2
F000:B533 loc_805: ; xref F000:B528
F000:B533 D2 E0 shl al,cl ; Shift w/zeros fill
F000:B535 08 06 008F or ds:data_54e,al ; (C000:008F=38h)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 164
F000:B539 loc_ret_806: ; xref F000:B518, B51D
F000:B539 C3 retn
sub_141 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B3CD
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_142 proc near
F000:B53A 50 push ax
F000:B53B 51 push cx
F000:B53C 52 push dx
F000:B53D BA 03F1 mov dx,3F1h
F000:B540 EC in al,dx ; port 3F1h, dsk status B
F000:B541 24 F8 and al,0F8h
F000:B543 3C 50 cmp al,50h ; 'P'
F000:B545 74 4F je short loc_818 ; Jump if equal
F000:B547 BA 05F7 mov dx,5F7h
F000:B54A EB 00 jmp short loc_807 ; (B54C)
F000:B54C loc_807: ; xref F000:B54A
F000:B54C EB 00 jmp short loc_808 ; (B54E)
F000:B54E loc_808: ; xref F000:B54C
F000:B54E EC in al,dx ; port 5F7h
F000:B54F 24 F0 and al,0F0h
F000:B551 3C A0 cmp al,0A0h
F000:B553 74 39 je short loc_817 ; Jump if equal
F000:B555 BA 01F7 mov dx,1F7h
F000:B558 B4 80 mov ah,80h
F000:B55A B9 0003 mov cx,3
F000:B55D locloop_809: ; xref F000:B566
F000:B55D 51 push cx
F000:B55E 33 C9 xor cx,cx ; Zero register
F000:B560 E8 39F7 call sub_260 ; (EF5A)
F000:B563 59 pop cx
F000:B564 73 09 jnc short loc_810 ; Jump if carry=0
F000:B566 E2 F5 loop locloop_809 ; Loop if cx > 0
F000:B568 EC in al,dx ; port 1F7h, hdsk0-status reg
F000:B569 24 0C and al,0Ch
F000:B56B 74 29 jz short loc_818 ; Jump if zero
F000:B56D EB 1F jmp short loc_817 ; (B58E)
F000:B56F loc_810: ; xref F000:B564
F000:B56F BA 01F4 mov dx,1F4h
F000:B572 B0 AA mov al,0AAh
F000:B574 EE out dx,al ; port 1F4h, hdsk0-cylr,lo byte
F000:B575 EB 00 jmp short loc_811 ; (B577)
F000:B577 loc_811: ; xref F000:B575
F000:B577 EB 00 jmp short loc_812 ; (B579)
F000:B579 loc_812: ; xref F000:B577
F000:B579 EC in al,dx ; port 1F4h, hdsk0-cylr,lo byte
F000:B57A 3C AA cmp al,0AAh
F000:B57C 75 10 jne short loc_817 ; Jump if not equal
F000:B57E B0 55 mov al,55h ; 'U'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 165
F000:B580 EB 00 jmp short loc_813 ; (B582)
F000:B582 loc_813: ; xref F000:B580
F000:B582 EB 00 jmp short loc_814 ; (B584)
F000:B584 loc_814: ; xref F000:B582
F000:B584 EE out dx,al ; port 1F4h, hdsk0-cylr,lo byte
F000:B585 EB 00 jmp short loc_815 ; (B587)
F000:B587 loc_815: ; xref F000:B585
F000:B587 EB 00 jmp short loc_816 ; (B589)
F000:B589 loc_816: ; xref F000:B587
F000:B589 EC in al,dx ; port 1F4h, hdsk0-cylr,lo byte
F000:B58A 3C 55 cmp al,55h ; 'U'
F000:B58C 74 08 je short loc_818 ; Jump if equal
F000:B58E loc_817: ; xref F000:B553, B56D, B57C
F000:B58E C6 06 008B 80 mov byte ptr ds:data_53e,80h ; (C000:008B=74h)
F000:B593 F9 stc ; Set carry flag
F000:B594 EB 06 jmp short loc_819 ; (B59C)
F000:B596 loc_818: ; xref F000:B545, B56B, B58C
F000:B596 C6 06 008B 81 mov byte ptr ds:data_53e,81h ; (C000:008B=74h)
F000:B59B F8 clc ; Clear carry flag
F000:B59C loc_819: ; xref F000:B594
F000:B59C 5A pop dx
F000:B59D 59 pop cx
F000:B59E 58 pop ax
F000:B59F C3 retn
sub_142 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B427, B611, B616, B817, B81C, B836, B83B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_143 proc near
F000:B5A0 51 push cx
F000:B5A1 52 push dx
F000:B5A2 8A F2 mov dh,dl
F000:B5A4 B2 07 mov dl,7
F000:B5A6 8B F2 mov si,dx
F000:B5A8 B5 02 mov ch,2
F000:B5AA 80 26 003E 7F and byte ptr ds:data_34e,7Fh ; (C000:003E=39h)
F000:B5AF E8 058A call sub_155 ; (BB3C)
F000:B5B2 72 48 jc short loc_820 ; Jump if carry Set
F000:B5B4 BE 0008 mov si,8
F000:B5B7 B5 01 mov ch,1
F000:B5B9 80 0E 003E 80 or byte ptr ds:data_34e,80h ; (C000:003E=39h)
F000:B5BE E8 057B call sub_155 ; (BB3C)
F000:B5C1 72 39 jc short loc_820 ; Jump if carry Set
F000:B5C3 BB 0042 mov bx,42h
F000:B5C6 B9 0002 mov cx,2
F000:B5C9 E8 05CA call sub_157 ; (BB96)
F000:B5CC 72 2E jc short loc_820 ; Jump if carry Set
F000:B5CE BB 0042 mov bx,42h
F000:B5D1 B4 40 mov ah,40h ; '@'
F000:B5D3 8A 17 mov dl,[bx]
F000:B5D5 80 E2 60 and dl,60h ; '`'
F000:B5D8 80 FA 60 cmp dl,60h ; '`'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 166
F000:B5DB F9 stc ; Set carry flag
F000:B5DC 74 1E jz short loc_820 ; Jump if zero
F000:B5DE 5A pop dx
F000:B5DF 52 push dx
F000:B5E0 32 F6 xor dh,dh ; Zero register
F000:B5E2 BB 0094 mov bx,94h
F000:B5E5 03 DA add bx,dx
F000:B5E7 C6 07 00 mov byte ptr [bx],0
F000:B5EA 8A CA mov cl,dl
F000:B5EC B2 01 mov dl,1
F000:B5EE D2 E2 shl dl,cl ; Shift w/zeros fill
F000:B5F0 08 16 003E or ds:data_34e,dl ; (C000:003E=39h)
F000:B5F4 B9 0043 mov cx,43h
F000:B5F7 E8 3A6E call sub_264 ; (F068)
F000:B5FA 32 E4 xor ah,ah ; Zero register
F000:B5FC loc_820: ; xref F000:B5B2, B5C1, B5CC, B5DC
F000:B5FC 88 26 0041 mov ds:data_37e,ah ; (C000:0041=0)
F000:B600 5A pop dx
F000:B601 59 pop cx
F000:B602 C3 retn
sub_143 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B149, B700, BA5A, BA61
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_144 proc near
F000:B603 53 push bx
F000:B604 51 push cx
F000:B605 8A 26 003E mov ah,dsk_recal_stat ; (0040:003E=0)
F000:B609 8A CA mov cl,dl
F000:B60B FE C1 inc cl
F000:B60D D2 EC shr ah,cl ; Shift w/zeros fill
F000:B60F 72 0D jc short loc_821 ; Jump if carry Set
F000:B611 E8 FF8C call sub_143 ; (B5A0)
F000:B614 73 08 jnc short loc_821 ; Jump if carry=0
F000:B616 E8 FF87 call sub_143 ; (B5A0)
F000:B619 73 03 jnc short loc_821 ; Jump if carry=0
F000:B61B E9 00DC jmp loc_830 ; (B6FA)
F000:B61E loc_821: ; xref F000:B60F, B614, B619
F000:B61E BB 0094 mov bx,94h
F000:B621 32 F6 xor dh,dh ; Zero register
F000:B623 03 DA add bx,dx
F000:B625 BE 0090 mov si,90h
F000:B628 03 F2 add si,dx
F000:B62A 8A D5 mov dl,ch
F000:B62C F6 04 20 test byte ptr [si],20h ; ' '
F000:B62F 74 02 jz short loc_822 ; Jump if zero
F000:B631 02 D2 add dl,dl
F000:B633 loc_822: ; xref F000:B62F
F000:B633 38 17 cmp [bx],dl
F000:B635 8B 56 0E mov dx,[bp+0Eh]
F000:B638 75 0C jnz short loc_823 ; Jump if not zero
F000:B63A 80 3E 0041 40 cmp dsk_ret_code,40h ; (0040:0041=0) '@'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 167
F000:B63F 74 05 je short loc_823 ; Jump if equal
F000:B641 32 E4 xor ah,ah ; Zero register
F000:B643 E9 00B4 jmp loc_830 ; (B6FA)
F000:B646 loc_823: ; xref F000:B638, B63F
F000:B646 C0 E6 02 shl dh,2 ; Shift w/zeros fill
F000:B649 0A F2 or dh,dl
F000:B64B B2 0F mov dl,0Fh
F000:B64D 8B F2 mov si,dx
F000:B64F 8A CD mov cl,ch
F000:B651 8B 56 0E mov dx,[bp+0Eh]
F000:B654 BB 0090 mov bx,90h
F000:B657 32 F6 xor dh,dh ; Zero register
F000:B659 03 DA add bx,dx
F000:B65B F6 07 20 test byte ptr [bx],20h ; ' '
F000:B65E 74 02 jz short loc_824 ; Jump if zero
F000:B660 02 C9 add cl,cl
F000:B662 loc_824: ; xref F000:B65E
F000:B662 8B F9 mov di,cx
F000:B664 B5 03 mov ch,3
F000:B666 80 26 003E 7F and dsk_recal_stat,7Fh ; (0040:003E=0)
F000:B66B E8 04CE call sub_155 ; (BB3C)
F000:B66E 73 03 jnc short loc_825 ; Jump if carry=0
F000:B670 E9 0083 jmp loc_829 ; (B6F6)
F000:B673 loc_825: ; xref F000:B66E
F000:B673 BE 0008 mov si,8
F000:B676 B5 01 mov ch,1
F000:B678 80 0E 003E 80 or dsk_recal_stat,80h ; (0040:003E=0)
F000:B67D E8 04BC call sub_155 ; (BB3C)
F000:B680 72 74 jc short loc_829 ; Jump if carry Set
F000:B682 BB 0042 mov bx,42h
F000:B685 B9 0002 mov cx,2
F000:B688 E8 050B call sub_157 ; (BB96)
F000:B68B 72 69 jc short loc_829 ; Jump if carry Set
F000:B68D BB 0042 mov bx,42h
F000:B690 B4 40 mov ah,40h ; '@'
F000:B692 8A 17 mov dl,[bx]
F000:B694 80 E2 60 and dl,60h ; '`'
F000:B697 80 FA 60 cmp dl,60h ; '`'
F000:B69A F9 stc ; Set carry flag
F000:B69B 74 59 jz short loc_829 ; Jump if zero
F000:B69D 8B 56 0E mov dx,[bp+0Eh]
F000:B6A0 59 pop cx
F000:B6A1 51 push cx
F000:B6A2 BE 0094 mov si,94h
F000:B6A5 32 F6 xor dh,dh ; Zero register
F000:B6A7 03 F2 add si,dx
F000:B6A9 88 2C mov [si],ch
F000:B6AB BB 0090 mov bx,90h
F000:B6AE 03 DA add bx,dx
F000:B6B0 8A 1F mov bl,[bx]
F000:B6B2 F6 C3 20 test bl,20h ; ' '
F000:B6B5 74 02 jz short loc_826 ; Jump if zero
F000:B6B7 00 2C add [si],ch
F000:B6B9 loc_826: ; xref F000:B6B5
F000:B6B9 1E push ds
F000:B6BA 33 F6 xor si,si ; Zero register
F000:B6BC 8E DE mov ds,si
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 168
F000:B6BE C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:B6C2 8A 44 09 mov al,[si+9]
F000:B6C5 1F pop ds
F000:B6C6 F6 06 003F 80 test dsk_motor_stat,80h ; (0040:003F=0)
F000:B6CB 74 19 jz short loc_827 ; Jump if zero
F000:B6CD 0A C0 or al,al ; Zero ?
F000:B6CF 75 15 jnz short loc_827 ; Jump if not zero
F000:B6D1 80 FB 17 cmp bl,17h
F000:B6D4 B0 0F mov al,0Fh
F000:B6D6 74 0E jz short loc_827 ; Jump if zero
F000:B6D8 80 E3 07 and bl,7
F000:B6DB B0 14 mov al,14h
F000:B6DD 74 07 jz short loc_827 ; Jump if zero
F000:B6DF 80 FB 03 cmp bl,3
F000:B6E2 74 02 je short loc_827 ; Jump if equal
F000:B6E4 B0 0F mov al,0Fh
F000:B6E6 loc_827: ; xref F000:B6CB, B6CF, B6D6, B6DD
; B6E2, B6F2
F000:B6E6 0A C0 or al,al ; Zero ?
F000:B6E8 74 0A jz short loc_828 ; Jump if zero
F000:B6EA B9 0043 mov cx,43h
F000:B6ED E8 3978 call sub_264 ; (F068)
F000:B6F0 FE C8 dec al
F000:B6F2 EB F2 jmp short loc_827 ; (B6E6)
F000:B6F4 loc_828: ; xref F000:B6E8
F000:B6F4 32 E4 xor ah,ah ; Zero register
F000:B6F6 loc_829: ; xref F000:B670, B680, B68B, B69B
F000:B6F6 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:B6FA loc_830: ; xref F000:B61B, B643
F000:B6FA 8B 56 0E mov dx,[bp+0Eh]
F000:B6FD 59 pop cx
F000:B6FE 5B pop bx
F000:B6FF C3 retn
sub_144 endp
F000:B700 loc_831: ; xref F000:B0D1
F000:B700 E8 FF00 call sub_144 ; (B603)
F000:B703 73 10 jnc short loc_833 ; Jump if carry=0
F000:B705 loc_832: ; xref F000:B7B2
F000:B705 B0 00 mov al,0
F000:B707 50 push ax
F000:B708 BB 0042 mov bx,42h
F000:B70B B9 0007 mov cx,7
F000:B70E E8 0485 call sub_157 ; (BB96)
F000:B711 58 pop ax
F000:B712 E9 00B2 jmp loc_843 ; (B7C7)
F000:B715 loc_833: ; xref F000:B703
F000:B715 1E push ds
F000:B716 33 F6 xor si,si ; Zero register
F000:B718 8E DE mov ds,si
F000:B71A C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:B71E 8B 44 02 mov ax,[si+2]
F000:B721 25 FF00 and ax,0FF00h
F000:B724 8A C1 mov al,cl
F000:B726 89 46 00 mov [bp],ax
F000:B729 8B 5C 04 mov bx,[si+4]
F000:B72C 8A 4C 06 mov cl,[si+6]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 169
F000:B72F 1F pop ds
F000:B730 BE 0090 mov si,90h
F000:B733 32 F6 xor dh,dh ; Zero register
F000:B735 03 F2 add si,dx
F000:B737 8A 14 mov dl,[si]
F000:B739 80 E2 07 and dl,7
F000:B73C B6 1B mov dh,1Bh
F000:B73E 80 FA 05 cmp dl,5
F000:B741 74 0E je short loc_834 ; Jump if equal
F000:B743 80 3C 17 cmp byte ptr [si],17h
F000:B746 74 09 je short loc_834 ; Jump if equal
F000:B748 B6 23 mov dh,23h ; '#'
F000:B74A 80 FA 04 cmp dl,4
F000:B74D 74 02 je short loc_834 ; Jump if equal
F000:B74F B6 2A mov dh,2Ah ; '*'
F000:B751 loc_834: ; xref F000:B741, B746, B74D
F000:B751 8A FE mov bh,dh
F000:B753 8B 56 0E mov dx,[bp+0Eh]
F000:B756 51 push cx
F000:B757 8A CD mov cl,ch
F000:B759 8A EE mov ch,dh
F000:B75B 8B F9 mov di,cx
F000:B75D C0 E6 02 shl dh,2 ; Shift w/zeros fill
F000:B760 0A F2 or dh,dl
F000:B762 B2 E6 mov dl,0E6h
F000:B764 8B 46 12 mov ax,[bp+12h]
F000:B767 80 FC 03 cmp ah,3
F000:B76A 75 02 jne short loc_835 ; Jump if not equal
F000:B76C B2 C5 mov dl,0C5h
F000:B76E loc_835: ; xref F000:B76A
F000:B76E 8B F2 mov si,dx
F000:B770 59 pop cx
F000:B771 B5 09 mov ch,9
F000:B773 80 26 003E 7F and dsk_recal_stat,7Fh ; (0040:003E=0)
F000:B778 80 FC 04 cmp ah,4
F000:B77B EB 30 jmp short loc_839 ; (B7AD)
F000:B77D 52 50 BA 61 04 E4 db 52h, 50h, 0BAh, 61h, 4, 0E4h
F000:B783 21 8A E0 0C 02 EB db 21h, 8Ah, 0E0h, 0Ch, 2, 0EBh
F000:B789 00 EB 00 db 0, 0EBh, 0
F000:B78C loc_836:
F000:B78C E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:B78E EC in al,dx ; port 0C5h
F000:B78F 8E C0 mov es,ax
F000:B791 24 FE and al,0FEh
F000:B793 EB 00 jmp short loc_837 ; (B795)
F000:B795 loc_837: ; xref F000:B793
F000:B795 EB 00 jmp short loc_838 ; (B797)
F000:B797 loc_838: ; xref F000:B795
F000:B797 EE out dx,al ; port 0C5h
F000:B798 58 pop ax
F000:B799 5A pop dx
F000:B79A E8 039F call sub_155 ; (BB3C)
F000:B79D 52 push dx
F000:B79E 50 push ax
F000:B79F BA 0461 mov dx,461h
F000:B7A2 8C C0 mov ax,es
F000:B7A4 EE out dx,al ; port 461h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 170
F000:B7A5 8A C4 mov al,ah
F000:B7A7 E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:B7A9 58 pop ax
F000:B7AA 5A pop dx
F000:B7AB EB 03 jmp short loc_840 ; (B7B0)
F000:B7AD loc_839: ; xref F000:B77B
F000:B7AD E8 038C call sub_155 ; (BB3C)
F000:B7B0 loc_840: ; xref F000:B7AB
F000:B7B0 73 03 jnc short loc_841 ; Jump if carry=0
F000:B7B2 E9 FF50 jmp loc_832 ; (B705)
F000:B7B5 loc_841: ; xref F000:B7B0
F000:B7B5 BB 0042 mov bx,42h
F000:B7B8 B9 0007 mov cx,7
F000:B7BB E8 03D8 call sub_157 ; (BB96)
F000:B7BE 73 04 jnc short loc_842 ; Jump if carry=0
F000:B7C0 B0 00 mov al,0
F000:B7C2 EB 03 jmp short loc_843 ; (B7C7)
F000:B7C4 loc_842: ; xref F000:B7BE
F000:B7C4 E8 041C call sub_159 ; (BBE3)
F000:B7C7 loc_843: ; xref F000:B712, B7C2
F000:B7C7 88 26 0041 mov dsk_ret_code,ah ; (0040:0041=0)
F000:B7CB 8B 56 0E mov dx,[bp+0Eh]
F000:B7CE 8B 5E 0C mov bx,[bp+0Ch]
F000:B7D1 8B 4E 10 mov cx,[bp+10h]
F000:B7D4 E9 F8FD jmp loc_751 ; (B0D4)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B060
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_146 proc near
F000:B7D7 53 push bx
F000:B7D8 51 push cx
F000:B7D9 8B 56 0E mov dx,[bp+0Eh]
F000:B7DC BE 0090 mov si,90h
F000:B7DF 32 F6 xor dh,dh ; Zero register
F000:B7E1 03 F2 add si,dx
F000:B7E3 8A 34 mov dh,[si]
F000:B7E5 80 E6 07 and dh,7
F000:B7E8 75 0D jnz short loc_845 ; Jump if not zero
F000:B7EA C6 04 02 mov byte ptr [si],2
F000:B7ED EB 08 jmp short loc_845 ; (B7F7)
F000:B7EF loc_844: ; xref F000:B803, B80C
F000:B7EF E8 0202 call sub_149 ; (B9F4)
F000:B7F2 32 E4 xor ah,ah ; Zero register
F000:B7F4 E9 0147 jmp loc_865 ; (B93E)
F000:B7F7 loc_845: ; xref F000:B7E8, B7ED
F000:B7F7 E8 388A call sub_265 ; (F084)
F000:B7FA 75 28 jnz short loc_849 ; Jump if not zero
F000:B7FC 3C 01 cmp al,1
F000:B7FE 75 05 jne short loc_846 ; Jump if not equal
F000:B800 C6 04 93 mov byte ptr [si],93h
F000:B803 EB EA jmp short loc_844 ; (B7EF)
F000:B805 loc_846: ; xref F000:B7FE
F000:B805 3C 03 cmp al,3
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 171
F000:B807 75 05 jne short loc_847 ; Jump if not equal
F000:B809 C6 04 97 mov byte ptr [si],97h
F000:B80C EB E1 jmp short loc_844 ; (B7EF)
F000:B80E loc_847: ; xref F000:B807
F000:B80E 3C 02 cmp al,2
F000:B810 74 12 je short loc_849 ; Jump if equal
F000:B812 80 26 008B F3 and byte ptr ds:data_53e,0F3h ; (C000:008B=74h)
F000:B817 E8 FD86 call sub_143 ; (B5A0)
F000:B81A 73 5E jnc short loc_853 ; Jump if carry=0
F000:B81C E8 FD81 call sub_143 ; (B5A0)
F000:B81F 73 59 jnc short loc_853 ; Jump if carry=0
F000:B821 loc_848: ; xref F000:B83E
F000:B821 E9 011E jmp loc_866 ; (B942)
F000:B824 loc_849: ; xref F000:B7FA, B810
F000:B824 B6 01 mov dh,1
F000:B826 E8 01F8 call sub_150 ; (BA21)
F000:B829 80 26 008B 33 and byte ptr ds:data_53e,33h ; (C000:008B=74h) '3'
F000:B82E 80 0E 008B 44 or byte ptr ds:data_53e,44h ; (C000:008B=74h) 'D'
F000:B833 8B 56 0E mov dx,[bp+0Eh]
F000:B836 E8 FD67 call sub_143 ; (B5A0)
F000:B839 73 05 jnc short loc_850 ; Jump if carry=0
F000:B83B E8 FD62 call sub_143 ; (B5A0)
F000:B83E 72 E1 jc loc_848 ; Jump if carry Set
F000:B840 loc_850: ; xref F000:B839
F000:B840 B9 0005 mov cx,5
F000:B843 locloop_851: ; xref F000:B871
F000:B843 51 push cx
F000:B844 8A F2 mov dh,dl
F000:B846 B2 4A mov dl,4Ah ; 'J'
F000:B848 8B F2 mov si,dx
F000:B84A 8A D6 mov dl,dh
F000:B84C B5 02 mov ch,2
F000:B84E 80 26 003E 7F and byte ptr ds:data_34e,7Fh ; (C000:003E=39h)
F000:B853 E8 02E6 call sub_155 ; (BB3C)
F000:B856 72 6E jc short loc_857 ; Jump if carry Set
F000:B858 BB 0042 mov bx,42h
F000:B85B B9 0007 mov cx,7
F000:B85E E8 0335 call sub_157 ; (BB96)
F000:B861 72 63 jc short loc_857 ; Jump if carry Set
F000:B863 BB 0042 mov bx,42h
F000:B866 F6 07 C0 test byte ptr [bx],0C0h
F000:B869 75 05 jnz short loc_852 ; Jump if not zero
F000:B86B B4 74 mov ah,74h ; 't'
F000:B86D E9 00B4 jmp loc_864 ; (B924)
F000:B870 loc_852: ; xref F000:B869
F000:B870 59 pop cx
F000:B871 E2 D0 loop locloop_851 ; Loop if cx > 0
F000:B873 B4 80 mov ah,80h
F000:B875 F6 07 08 test byte ptr [bx],8
F000:B878 75 59 jnz short loc_859 ; Jump if not zero
F000:B87A loc_853: ; xref F000:B81A, B81F
F000:B87A 32 F6 xor dh,dh ; Zero register
F000:B87C E8 01A2 call sub_150 ; (BA21)
F000:B87F 80 26 008B 3F and byte ptr ds:data_53e,3Fh ; (C000:008B=74h) '?'
F000:B884 8B 56 0E mov dx,[bp+0Eh]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 172
F000:B887 B9 0005 mov cx,5
F000:B88A locloop_854: ; xref F000:B8CA
F000:B88A 51 push cx
F000:B88B 8A F2 mov dh,dl
F000:B88D B2 4A mov dl,4Ah ; 'J'
F000:B88F 8B F2 mov si,dx
F000:B891 8A D6 mov dl,dh
F000:B893 B5 02 mov ch,2
F000:B895 80 26 003E 7F and byte ptr ds:data_34e,7Fh ; (C000:003E=39h)
F000:B89A E8 029F call sub_155 ; (BB3C)
F000:B89D 72 27 jc short loc_857 ; Jump if carry Set
F000:B89F BB 0042 mov bx,42h
F000:B8A2 B9 0007 mov cx,7
F000:B8A5 E8 02EE call sub_157 ; (BB96)
F000:B8A8 72 1C jc short loc_857 ; Jump if carry Set
F000:B8AA BB 0042 mov bx,42h
F000:B8AD F6 07 C0 test byte ptr [bx],0C0h
F000:B8B0 75 17 jnz short loc_858 ; Jump if not zero
F000:B8B2 50 push ax
F000:B8B3 E8 37CE call sub_265 ; (F084)
F000:B8B6 75 09 jnz short loc_855 ; Jump if not zero
F000:B8B8 3C 04 cmp al,4
F000:B8BA 58 pop ax
F000:B8BB 75 05 jnz short loc_856 ; Jump if not zero
F000:B8BD B4 17 mov ah,17h
F000:B8BF EB 63 jmp short loc_864 ; (B924)
F000:B8C1 loc_855: ; xref F000:B8B6
F000:B8C1 58 pop ax
F000:B8C2 loc_856: ; xref F000:B8BB
F000:B8C2 B4 15 mov ah,15h
F000:B8C4 EB 5E jmp short loc_864 ; (B924)
F000:B8C6 loc_857: ; xref F000:B856, B861, B89D, B8A8
; B8FE, B909
F000:B8C6 59 pop cx
F000:B8C7 EB 75 jmp short loc_865 ; (B93E)
F000:B8C9 loc_858: ; xref F000:B8B0
F000:B8C9 59 pop cx
F000:B8CA E2 BE loop locloop_854 ; Loop if cx > 0
F000:B8CC B4 80 mov ah,80h
F000:B8CE F6 07 08 test byte ptr [bx],8
F000:B8D1 74 03 jz short loc_860 ; Jump if zero
F000:B8D3 loc_859: ; xref F000:B878
F000:B8D3 F9 stc ; Set carry flag
F000:B8D4 EB 68 jmp short loc_865 ; (B93E)
F000:B8D6 loc_860: ; xref F000:B8D1
F000:B8D6 B6 02 mov dh,2
F000:B8D8 E8 0146 call sub_150 ; (BA21)
F000:B8DB 80 26 008B 3F and byte ptr ds:data_53e,3Fh ; (C000:008B=74h) '?'
F000:B8E0 80 0E 008B 80 or byte ptr ds:data_53e,80h ; (C000:008B=74h)
F000:B8E5 8B 56 0E mov dx,[bp+0Eh]
F000:B8E8 B9 0005 mov cx,5
F000:B8EB locloop_861: ; xref F000:B914
F000:B8EB 51 push cx
F000:B8EC 8A F2 mov dh,dl
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 173
F000:B8EE B2 4A mov dl,4Ah ; 'J'
F000:B8F0 8B F2 mov si,dx
F000:B8F2 8A D6 mov dl,dh
F000:B8F4 B5 02 mov ch,2
F000:B8F6 80 26 003E 7F and byte ptr ds:data_34e,7Fh ; (C000:003E=39h)
F000:B8FB E8 023E call sub_155 ; (BB3C)
F000:B8FE 72 C6 jc loc_857 ; Jump if carry Set
F000:B900 BB 0042 mov bx,42h
F000:B903 B9 0007 mov cx,7
F000:B906 E8 028D call sub_157 ; (BB96)
F000:B909 72 BB jc loc_857 ; Jump if carry Set
F000:B90B BB 0042 mov bx,42h
F000:B90E F6 07 C0 test byte ptr [bx],0C0h
F000:B911 74 0F jz short loc_863 ; Jump if zero
F000:B913 59 pop cx
F000:B914 E2 D5 loop locloop_861 ; Loop if cx > 0
F000:B916 B4 80 mov ah,80h
F000:B918 F6 07 08 test byte ptr [bx],8
F000:B91B 75 02 jnz short loc_862 ; Jump if not zero
F000:B91D B4 02 mov ah,2
F000:B91F loc_862: ; xref F000:B91B
F000:B91F F9 stc ; Set carry flag
F000:B920 EB 1C jmp short loc_865 ; (B93E)
F000:B922 loc_863: ; xref F000:B911
F000:B922 B4 97 mov ah,97h
F000:B924 loc_864: ; xref F000:B86D, B8BF, B8C4
F000:B924 59 pop cx
F000:B925 32 F6 xor dh,dh ; Zero register
F000:B927 BB 0090 mov bx,90h
F000:B92A 03 DA add bx,dx
F000:B92C 88 27 mov [bx],ah
F000:B92E B0 04 mov al,4
F000:B930 F6 E2 mul dl ; ax = reg * al
F000:B932 8A C8 mov cl,al
F000:B934 B0 02 mov al,2
F000:B936 D2 E0 shl al,cl ; Shift w/zeros fill
F000:B938 08 06 008F or ds:data_54e,al ; (C000:008F=38h)
F000:B93C 32 E4 xor ah,ah ; Zero register
F000:B93E loc_865: ; xref F000:B7F4, B8C7, B8D4, B920
F000:B93E 88 26 0041 mov ds:data_37e,ah ; (C000:0041=0)
F000:B942 loc_866: ; xref F000:B821
F000:B942 8B 56 0E mov dx,[bp+0Eh]
F000:B945 59 pop cx
F000:B946 5B pop bx
F000:B947 C3 retn
sub_146 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:AF60, AFCE, B044, B113, B424
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_147 proc near
F000:B948 52 push dx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 174
F000:B949 51 push cx
F000:B94A FA cli ; Disable interrupts
F000:B94B C6 06 0040 FF mov dsk_motor_tmr,0FFh ; (0040:0040=0F8h)
F000:B950 80 26 003F CF and dsk_motor_stat,0CFh ; (0040:003F=0)
F000:B955 8A EA mov ch,dl
F000:B957 C0 E2 04 shl dl,4 ; Shift w/zeros fill
F000:B95A 08 16 003F or dsk_motor_stat,dl ; (0040:003F=0)
F000:B95E 8A CD mov cl,ch
F000:B960 8A 16 003F mov dl,dsk_motor_stat ; (0040:003F=0)
F000:B964 FE C1 inc cl
F000:B966 D2 EA shr dl,cl ; Shift w/zeros fill
F000:B968 72 4F jc short loc_869 ; Jump if carry Set
F000:B96A B2 01 mov dl,1
F000:B96C FE C9 dec cl
F000:B96E D2 E2 shl dl,cl ; Shift w/zeros fill
F000:B970 08 16 003F or dsk_motor_stat,dl ; (0040:003F=0)
F000:B974 FB sti ; Enable interrupts
F000:B975 A0 003F mov al,dsk_motor_stat ; (0040:003F=0)
F000:B978 C0 C8 04 ror al,4 ; Rotate
F000:B97B 0C 0C or al,0Ch
F000:B97D BA 03F2 mov dx,3F2h
F000:B980 EE out dx,al ; port 3F2h, dsk0 contrl output
F000:B981 B8 90FD mov ax,90FDh
F000:B984 CD 15 int 15h ; General services, ah=func 90h
; device busy, al=type
F000:B986 72 3E jc short loc_870 ; Jump if carry Set
F000:B988 8A 26 003F mov ah,dsk_motor_stat ; (0040:003F=0)
F000:B98C 1E push ds
F000:B98D 56 push si
F000:B98E 33 F6 xor si,si ; Zero register
F000:B990 8E DE mov ds,si
F000:B992 C5 36 0078 lds si,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:B996 8A 44 0A mov al,[si+0Ah]
F000:B999 5E pop si
F000:B99A 1F pop ds
F000:B99B D0 E4 shl ah,1 ; Shift w/zeros fill
F000:B99D 73 08 jnc short loc_867 ; Jump if carry=0
F000:B99F 3C 08 cmp al,8
F000:B9A1 73 0A jae short loc_868 ; Jump if above or =
F000:B9A3 B0 08 mov al,8
F000:B9A5 EB 06 jmp short loc_868 ; (B9AD)
F000:B9A7 loc_867: ; xref F000:B99D
F000:B9A7 3C 05 cmp al,5
F000:B9A9 73 02 jae short loc_868 ; Jump if above or =
F000:B9AB B0 05 mov al,5
F000:B9AD loc_868: ; xref F000:B9A1, B9A5, B9A9, B9B5
F000:B9AD B9 208E mov cx,208Eh
F000:B9B0 E8 36B5 call sub_264 ; (F068)
F000:B9B3 FE C8 dec al
F000:B9B5 75 F6 jnz loc_868 ; Jump if not zero
F000:B9B7 EB 0D jmp short loc_870 ; (B9C6)
F000:B9B9 loc_869: ; xref F000:B968
F000:B9B9 FB sti ; Enable interrupts
F000:B9BA A0 003F mov al,dsk_motor_stat ; (0040:003F=0)
F000:B9BD C0 C8 04 ror al,4 ; Rotate
F000:B9C0 0C 0C or al,0Ch
F000:B9C2 BA 03F2 mov dx,3F2h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 175
F000:B9C5 EE out dx,al ; port 3F2h, dsk0 contrl output
F000:B9C6 loc_870: ; xref F000:B986, B9B7
F000:B9C6 59 pop cx
F000:B9C7 5A pop dx
F000:B9C8 C3 retn
sub_147 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B04D, B0D4, B11B, B197
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_148 proc near
F000:B9C9 50 push ax
F000:B9CA 1E push ds
F000:B9CB 33 DB xor bx,bx ; Zero register
F000:B9CD 8E DB mov ds,bx
F000:B9CF C5 1E 0078 lds bx,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:B9D3 8A 67 02 mov ah,[bx+2]
F000:B9D6 8A 47 04 mov al,[bx+4]
F000:B9D9 FE C0 inc al
F000:B9DB 1F pop ds
F000:B9DC BB 0042 mov bx,42h
F000:B9DF 3A 6F 03 cmp ch,[bx+3]
F000:B9E2 75 08 jne short loc_871 ; Jump if not equal
F000:B9E4 3A 77 04 cmp dh,[bx+4]
F000:B9E7 75 03 jne short loc_871 ; Jump if not equal
F000:B9E9 8A 47 05 mov al,[bx+5]
F000:B9EC loc_871: ; xref F000:B9E2, B9E7
F000:B9EC 88 26 0040 mov ds:data_36e,ah ; (C000:0040=0)
F000:B9F0 8A D8 mov bl,al
F000:B9F2 58 pop ax
F000:B9F3 C3 retn
sub_148 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B067, B120, B7EF
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_149 proc near
F000:B9F4 56 push si
F000:B9F5 BE 0090 mov si,90h
F000:B9F8 32 F6 xor dh,dh ; Zero register
F000:B9FA 03 F2 add si,dx
F000:B9FC 8A 34 mov dh,[si]
F000:B9FE 8A 16 008B mov dl,ds:data_53e ; (C000:008B=74h)
F000:BA02 81 E2 C0C0 and dx,0C0C0h
F000:BA06 3A D6 cmp dl,dh
F000:BA08 74 12 je short loc_872 ; Jump if equal
F000:BA0A 80 26 008B 3F and byte ptr ds:data_53e,3Fh ; (C000:008B=74h) '?'
F000:BA0F 08 36 008B or ds:data_53e,dh ; (C000:008B=74h)
F000:BA13 80 E6 C0 and dh,0C0h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 176
F000:BA16 C0 C6 02 rol dh,2 ; Rotate
F000:BA19 E8 0005 call sub_150 ; (BA21)
F000:BA1C loc_872: ; xref F000:BA08
F000:BA1C 5E pop si
F000:BA1D 8B 56 0E mov dx,[bp+0Eh]
F000:BA20 C3 retn
sub_149 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B39C, B3FC, B826, B87C, B8D8, BA19
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_150 proc near
F000:BA21 50 push ax
F000:BA22 8A C6 mov al,dh
F000:BA24 BA 03F7 mov dx,3F7h
F000:BA27 EE out dx,al ; port 3F7h, dsk0 config ctrl
F000:BA28 58 pop ax
F000:BA29 C3 retn
sub_150 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:AF65, B047, B116
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_151 proc near
F000:BA2A 51 push cx
F000:BA2B E8 3656 call sub_265 ; (F084)
F000:BA2E B4 00 mov ah,0
F000:BA30 75 04 jnz short loc_873 ; Jump if not zero
F000:BA32 FE C8 dec al
F000:BA34 74 3C jz short loc_874 ; Jump if zero
F000:BA36 loc_873: ; xref F000:BA30
F000:BA36 8A 04 mov al,[si]
F000:BA38 24 07 and al,7
F000:BA3A 74 36 jz short loc_874 ; Jump if zero
F000:BA3C 3C 03 cmp al,3
F000:BA3E 74 32 je short loc_874 ; Jump if equal
F000:BA40 E8 0286 call sub_162 ; (BCC9)
F000:BA43 73 32 jnc short loc_875 ; Jump if carry=0
F000:BA45 BA 03F7 mov dx,3F7h
F000:BA48 EC in al,dx ; port 3F7h, dsk0 status C
F000:BA49 D0 E0 shl al,1 ; Shift w/zeros fill
F000:BA4B 73 2A jnc short loc_875 ; Jump if carry=0
F000:BA4D 80 24 EF and byte ptr [si],0EFh
F000:BA50 E8 F479 call sub_135 ; (AECC)
F000:BA53 72 22 jc short loc_875 ; Jump if carry Set
F000:BA55 8B 56 0E mov dx,[bp+0Eh]
F000:BA58 B5 01 mov ch,1
F000:BA5A E8 FBA6 call sub_144 ; (B603)
F000:BA5D 72 18 jc short loc_875 ; Jump if carry Set
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 177
F000:BA5F B5 00 mov ch,0
F000:BA61 E8 FB9F call sub_144 ; (B603)
F000:BA64 72 11 jc short loc_875 ; Jump if carry Set
F000:BA66 B4 06 mov ah,6
F000:BA68 BA 03F7 mov dx,3F7h
F000:BA6B EC in al,dx ; port 3F7h, dsk0 status C
F000:BA6C D0 E0 shl al,1 ; Shift w/zeros fill
F000:BA6E 73 02 jnc short loc_874 ; Jump if carry=0
F000:BA70 B4 80 mov ah,80h
F000:BA72 loc_874: ; xref F000:BA34, BA3A, BA3E, BA6E
F000:BA72 0A E4 or ah,ah ; Zero ?
F000:BA74 74 01 jz short loc_875 ; Jump if zero
F000:BA76 F9 stc ; Set carry flag
F000:BA77 loc_875: ; xref F000:BA43, BA4B, BA53, BA5D
; BA64, BA74
F000:BA77 8B 56 0E mov dx,[bp+0Eh]
F000:BA7A 59 pop cx
F000:BA7B C3 retn
sub_151 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B0C8, B143
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_152 proc near
F000:BA7C 50 push ax
F000:BA7D 52 push dx
F000:BA7E FA cli ; Disable interrupts
F000:BA7F 8A C4 mov al,ah
F000:BA81 E6 0C out 0Ch,al ; port 0Ch, DMA-1 clr byte ptr
F000:BA83 EB 00 jmp short loc_876 ; (BA85)
F000:BA85 loc_876: ; xref F000:BA83
F000:BA85 EB 00 jmp short loc_877 ; (BA87)
F000:BA87 loc_877: ; xref F000:BA85
F000:BA87 E6 0B out 0Bh,al ; port 0Bh, DMA-1 mode reg
F000:BA89 EB 00 jmp short loc_878 ; (BA8B)
F000:BA8B loc_878: ; xref F000:BA89
F000:BA8B EB 00 jmp short loc_879 ; (BA8D)
F000:BA8D loc_879: ; xref F000:BA8B
F000:BA8D 8A C1 mov al,cl
F000:BA8F E6 05 out 5,al ; port 5, DMA-1 bas&cnt ch 2
F000:BA91 EB 00 jmp short loc_880 ; (BA93)
F000:BA93 loc_880: ; xref F000:BA91
F000:BA93 EB 00 jmp short loc_881 ; (BA95)
F000:BA95 loc_881: ; xref F000:BA93
F000:BA95 8A C5 mov al,ch
F000:BA97 E6 05 out 5,al ; port 5, DMA-1 bas&cnt ch 2
F000:BA99 EB 00 jmp short loc_882 ; (BA9B)
F000:BA9B loc_882: ; xref F000:BA99
F000:BA9B EB 00 jmp short loc_883 ; (BA9D)
F000:BA9D loc_883: ; xref F000:BA9B
F000:BA9D 8A C3 mov al,bl
F000:BA9F E6 04 out 4,al ; port 4, DMA-1 bas&add ch 2
F000:BAA1 EB 00 jmp short loc_884 ; (BAA3)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 178
F000:BAA3 loc_884: ; xref F000:BAA1
F000:BAA3 EB 00 jmp short loc_885 ; (BAA5)
F000:BAA5 loc_885: ; xref F000:BAA3
F000:BAA5 8A C7 mov al,bh
F000:BAA7 E6 04 out 4,al ; port 4, DMA-1 bas&add ch 2
F000:BAA9 EB 00 jmp short loc_886 ; (BAAB)
F000:BAAB loc_886: ; xref F000:BAA9
F000:BAAB EB 00 jmp short loc_887 ; (BAAD)
F000:BAAD loc_887: ; xref F000:BAAB
F000:BAAD 8C C0 mov ax,es
F000:BAAF E6 81 out 81h,al ; port 81h, DMA page reg ch 2
F000:BAB1 EB 00 jmp short loc_888 ; (BAB3)
F000:BAB3 loc_888: ; xref F000:BAB1
F000:BAB3 EB 00 jmp short loc_889 ; (BAB5)
F000:BAB5 loc_889: ; xref F000:BAB3
F000:BAB5 B0 02 mov al,2
F000:BAB7 E6 0A out 0Ah,al ; port 0Ah, DMA-1 mask reg bit
F000:BAB9 FB sti ; Enable interrupts
F000:BABA 5A pop dx
F000:BABB 58 pop ax
F000:BABC C3 retn
sub_152 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B0A9, B13C
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_153 proc near
F000:BABD 51 push cx
F000:BABE 33 C0 xor ax,ax ; Zero register
F000:BAC0 8C C1 mov cx,es
F000:BAC2 D1 E1 shl cx,1 ; Shift w/zeros fill
F000:BAC4 D0 D0 rcl al,1 ; Rotate thru carry
F000:BAC6 D1 E1 shl cx,1 ; Shift w/zeros fill
F000:BAC8 D0 D0 rcl al,1 ; Rotate thru carry
F000:BACA D1 E1 shl cx,1 ; Shift w/zeros fill
F000:BACC D0 D0 rcl al,1 ; Rotate thru carry
F000:BACE D1 E1 shl cx,1 ; Shift w/zeros fill
F000:BAD0 D0 D0 rcl al,1 ; Rotate thru carry
F000:BAD2 8B 5E 0C mov bx,[bp+0Ch]
F000:BAD5 03 D9 add bx,cx
F000:BAD7 15 0000 adc ax,0
F000:BADA 8E C0 mov es,ax
F000:BADC 59 pop cx
F000:BADD 8B C1 mov ax,cx
F000:BADF 03 C3 add ax,bx
F000:BAE1 73 02 jnc short loc_ret_890 ; Jump if carry=0
F000:BAE3 B4 09 mov ah,9
F000:BAE5 loc_ret_890: ; xref F000:BAE1
F000:BAE5 C3 retn
sub_153 endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 179
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BB48, BB4C
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_154 proc near
F000:BAE6 8B C6 mov ax,si
F000:BAE8 8A E0 mov ah,al
F000:BAEA E8 007C call sub_156 ; (BB69)
F000:BAED FE CD dec ch
F000:BAEF 76 4A jbe short loc_ret_891 ; Jump if below or =
F000:BAF1 8B C6 mov ax,si
F000:BAF3 E8 0073 call sub_156 ; (BB69)
F000:BAF6 FE CD dec ch
F000:BAF8 76 41 jbe short loc_ret_891 ; Jump if below or =
F000:BAFA 8B C7 mov ax,di
F000:BAFC 8A E0 mov ah,al
F000:BAFE E8 0068 call sub_156 ; (BB69)
F000:BB01 FE CD dec ch
F000:BB03 76 36 jbe short loc_ret_891 ; Jump if below or =
F000:BB05 8B C7 mov ax,di
F000:BB07 E8 005F call sub_156 ; (BB69)
F000:BB0A FE CD dec ch
F000:BB0C 76 2D jbe short loc_ret_891 ; Jump if below or =
F000:BB0E 8B 46 00 mov ax,[bp]
F000:BB11 8A E0 mov ah,al
F000:BB13 E8 0053 call sub_156 ; (BB69)
F000:BB16 FE CD dec ch
F000:BB18 76 21 jbe short loc_ret_891 ; Jump if below or =
F000:BB1A 8B 46 00 mov ax,[bp]
F000:BB1D E8 0049 call sub_156 ; (BB69)
F000:BB20 FE CD dec ch
F000:BB22 76 17 jbe short loc_ret_891 ; Jump if below or =
F000:BB24 8A E3 mov ah,bl
F000:BB26 E8 0040 call sub_156 ; (BB69)
F000:BB29 FE CD dec ch
F000:BB2B 76 0E jbe short loc_ret_891 ; Jump if below or =
F000:BB2D 8A E7 mov ah,bh
F000:BB2F E8 0037 call sub_156 ; (BB69)
F000:BB32 FE CD dec ch
F000:BB34 76 05 jbe short loc_ret_891 ; Jump if below or =
F000:BB36 8A E1 mov ah,cl
F000:BB38 E8 002E call sub_156 ; (BB69)
F000:BB3B loc_ret_891: ; xref F000:BAEF, BAF8, BB03, BB0C
; BB18, BB22, BB2B, BB34
F000:BB3B C3 retn
sub_154 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B089, B180, B5AF, B5BE, B66B, B67D, B79A
; B7AD, B853, B89A, B8FB, BCC3
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 180
sub_155 proc near
F000:BB3C F6 06 003E 80 test byte ptr ds:data_34e,80h ; (C000:003E=39h)
F000:BB41 74 09 jz short loc_892 ; Jump if zero
F000:BB43 80 26 003E 7F and byte ptr ds:data_34e,7Fh ; (C000:003E=39h)
F000:BB48 E8 FF9B call sub_154 ; (BAE6)
F000:BB4B C3 retn
F000:BB4C loc_892: ; xref F000:BB41
F000:BB4C E8 FF97 call sub_154 ; (BAE6)
F000:BB4F 72 0F jc short loc_ret_894 ; Jump if carry Set
F000:BB51 B8 9001 mov ax,9001h
F000:BB54 CD 15 int 15h ; General services, ah=func 90h
; device busy, al=type
F000:BB56 FB sti ; Enable interrupts
F000:BB57 72 05 jc short loc_893 ; Jump if carry Set
F000:BB59 E8 017A call sub_163 ; (BCD6)
F000:BB5C 73 03 jnc short loc_895 ; Jump if carry=0
F000:BB5E loc_893: ; xref F000:BB57
F000:BB5E B4 80 mov ah,80h
F000:BB60 loc_ret_894: ; xref F000:BB4F
F000:BB60 C3 retn
F000:BB61 loc_895: ; xref F000:BB5C
F000:BB61 80 26 003E 7F and byte ptr ds:data_34e,7Fh ; (C000:003E=39h)
F000:BB66 32 E4 xor ah,ah ; Zero register
F000:BB68 C3 retn
sub_155 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B48F, B496, B49F, B4B2, B4D2, B4D9, BAEA
; BAF3, BAFE, BB07, BB13, BB1D, BB26, BB2F
; BB38, BC4A
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_156 proc near
F000:BB69 51 push cx
F000:BB6A 52 push dx
F000:BB6B B9 0002 mov cx,2
F000:BB6E E8 34F7 call sub_264 ; (F068)
F000:BB71 BA 03F4 mov dx,3F4h
F000:BB74 50 push ax
F000:BB75 B4 40 mov ah,40h ; '@'
F000:BB77 33 C9 xor cx,cx ; Zero register
F000:BB79 E8 33DE call sub_260 ; (EF5A)
F000:BB7C 72 12 jc short loc_896 ; Jump if carry Set
F000:BB7E B4 80 mov ah,80h
F000:BB80 33 C9 xor cx,cx ; Zero register
F000:BB82 E8 33F9 call sub_261 ; (EF7E)
F000:BB85 72 09 jc short loc_896 ; Jump if carry Set
F000:BB87 58 pop ax
F000:BB88 BA 03F5 mov dx,3F5h
F000:BB8B 8A C4 mov al,ah
F000:BB8D EE out dx,al ; port 3F5h, dsk0 controlr data
; al = 0Fh, Seek
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 181
F000:BB8E EB 03 jmp short loc_897 ; (BB93)
F000:BB90 loc_896: ; xref F000:BB7C, BB85
F000:BB90 58 pop ax
F000:BB91 B4 80 mov ah,80h
F000:BB93 loc_897: ; xref F000:BB8E
F000:BB93 5A pop dx
F000:BB94 59 pop cx
F000:BB95 C3 retn
sub_156 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B155, B18B, B5C9, B688, B70E, B7BB, B85E
; B8A5, B906
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_157 proc near
F000:BB96 52 push dx
F000:BB97 locloop_898: ; xref F000:BBA1
F000:BB97 51 push cx
F000:BB98 E8 001F call sub_158 ; (BBBA)
F000:BB9B 59 pop cx
F000:BB9C 72 1A jc short loc_900 ; Jump if carry Set
F000:BB9E 88 07 mov [bx],al
F000:BBA0 43 inc bx
F000:BBA1 E2 F4 loop locloop_898 ; Loop if cx > 0
F000:BBA3 B9 0002 mov cx,2
F000:BBA6 E8 34BF call sub_264 ; (F068)
F000:BBA9 BA 03F4 mov dx,3F4h
F000:BBAC EC in al,dx ; port 3F4h, dsk0 cntrlr status
F000:BBAD A8 10 test al,10h
F000:BBAF 74 05 jz short loc_899 ; Jump if zero
F000:BBB1 B4 20 mov ah,20h ; ' '
F000:BBB3 F9 stc ; Set carry flag
F000:BBB4 EB 02 jmp short loc_900 ; (BBB8)
F000:BBB6 loc_899: ; xref F000:BBAF
F000:BBB6 32 E4 xor ah,ah ; Zero register
F000:BBB8 loc_900: ; xref F000:BB9C, BBB4
F000:BBB8 5A pop dx
F000:BBB9 C3 retn
sub_157 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B4B7, B4BE, B4DE, BB98, BC4F, BC58
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_158 proc near
F000:BBBA 52 push dx
F000:BBBB B9 0002 mov cx,2
F000:BBBE E8 34A7 call sub_264 ; (F068)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 182
F000:BBC1 BA 03F4 mov dx,3F4h
F000:BBC4 B4 80 mov ah,80h
F000:BBC6 33 C9 xor cx,cx ; Zero register
F000:BBC8 E8 33B3 call sub_261 ; (EF7E)
F000:BBCB B4 80 mov ah,80h
F000:BBCD 72 12 jc short loc_904 ; Jump if carry Set
F000:BBCF EC in al,dx ; port 3F4h, dsk0 cntrlr status
F000:BBD0 A8 40 test al,40h ; '@'
F000:BBD2 75 05 jnz short loc_901 ; Jump if not zero
F000:BBD4 B4 20 mov ah,20h ; ' '
F000:BBD6 F9 stc ; Set carry flag
F000:BBD7 EB 08 jmp short loc_904 ; (BBE1)
F000:BBD9 loc_901: ; xref F000:BBD2
F000:BBD9 EB 00 jmp short loc_902 ; (BBDB)
F000:BBDB loc_902: ; xref F000:BBD9
F000:BBDB EB 00 jmp short loc_903 ; (BBDD)
F000:BBDD loc_903: ; xref F000:BBDB
F000:BBDD BA 03F5 mov dx,3F5h
F000:BBE0 EC in al,dx ; port 3F5h, dsk0 controlr data
F000:BBE1 loc_904: ; xref F000:BBCD, BBD7
F000:BBE1 5A pop dx
F000:BBE2 C3 retn
sub_158 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B190, B7C4
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_159 proc near
F000:BBE3 BB 0042 mov bx,42h
F000:BBE6 8B 1F mov bx,[bx]
F000:BBE8 F6 C3 C0 test bl,0C0h
F000:BBEB B4 00 mov ah,0
F000:BBED 74 33 jz short loc_ret_905 ; Jump if zero
F000:BBEF F6 C3 40 test bl,40h ; '@'
F000:BBF2 B4 20 mov ah,20h ; ' '
F000:BBF4 74 2C jz short loc_ret_905 ; Jump if zero
F000:BBF6 F6 C7 01 test bh,1
F000:BBF9 B4 02 mov ah,2
F000:BBFB 75 25 jnz short loc_ret_905 ; Jump if not zero
F000:BBFD F6 C7 02 test bh,2
F000:BC00 B4 03 mov ah,3
F000:BC02 75 1E jnz short loc_ret_905 ; Jump if not zero
F000:BC04 F6 C7 04 test bh,4
F000:BC07 B4 04 mov ah,4
F000:BC09 75 17 jnz short loc_ret_905 ; Jump if not zero
F000:BC0B F6 C7 10 test bh,10h
F000:BC0E B4 08 mov ah,8
F000:BC10 75 10 jnz short loc_ret_905 ; Jump if not zero
F000:BC12 F6 C7 20 test bh,20h ; ' '
F000:BC15 B4 10 mov ah,10h
F000:BC17 75 09 jnz short loc_ret_905 ; Jump if not zero
F000:BC19 F6 C7 80 test bh,80h
F000:BC1C B4 04 mov ah,4
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 183
F000:BC1E 75 02 jnz short loc_ret_905 ; Jump if not zero
F000:BC20 B4 20 mov ah,20h ; ' '
F000:BC22 loc_ret_905: ; xref F000:BBED, BBF4, BBFB, BC02
; BC09, BC10, BC17, BC1E
F000:BC22 C3 retn
sub_159 endp
F000:BC23 loc_906: ; xref F000:AED1
F000:BC23 E8 0048 call sub_160 ; (BC6E)
F000:BC26 72 43 jc short loc_910 ; Jump if carry Set
F000:BC28 BA 03F4 mov dx,3F4h
F000:BC2B EC in al,dx ; port 3F4h, dsk0 cntrlr status
F000:BC2C A8 80 test al,80h
F000:BC2E 74 04 jz short loc_907 ; Jump if zero
F000:BC30 A8 40 test al,40h ; '@'
F000:BC32 74 14 jz short loc_909 ; Jump if zero
F000:BC34 loc_907: ; xref F000:BC2E
F000:BC34 E8 0037 call sub_160 ; (BC6E)
F000:BC37 BA 03F4 mov dx,3F4h
F000:BC3A EC in al,dx ; port 3F4h, dsk0 cntrlr status
F000:BC3B A8 80 test al,80h
F000:BC3D 74 04 jz short loc_908 ; Jump if zero
F000:BC3F A8 40 test al,40h ; '@'
F000:BC41 74 05 jz short loc_909 ; Jump if zero
F000:BC43 loc_908: ; xref F000:BC3D, BC67
F000:BC43 B4 20 mov ah,20h ; ' '
F000:BC45 F9 stc ; Set carry flag
F000:BC46 EB 23 jmp short loc_910 ; (BC6B)
F000:BC48 loc_909: ; xref F000:BC32, BC41
F000:BC48 B4 08 mov ah,8
F000:BC4A E8 FF1C call sub_156 ; (BB69)
F000:BC4D 72 1C jc short loc_910 ; Jump if carry Set
F000:BC4F E8 FF68 call sub_158 ; (BBBA)
F000:BC52 72 17 jc short loc_910 ; Jump if carry Set
F000:BC54 A2 0042 mov dsk_status_1,al ; (0040:0042=0C0h)
F000:BC57 50 push ax
F000:BC58 E8 FF5F call sub_158 ; (BBBA)
F000:BC5B A2 0043 mov dsk_status_2,al ; (0040:0043=0)
F000:BC5E 59 pop cx
F000:BC5F 72 0A jc short loc_910 ; Jump if carry Set
F000:BC61 80 E1 C0 and cl,0C0h
F000:BC64 80 F9 C0 cmp cl,0C0h
F000:BC67 75 DA jne loc_908 ; Jump if not equal
F000:BC69 32 E4 xor ah,ah ; Zero register
F000:BC6B loc_910: ; xref F000:BC26, BC46, BC4D, BC52
; BC5F
F000:BC6B E9 F266 jmp loc_707 ; (AED4)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BC23, BC34
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_160 proc near
F000:BC6E FA cli ; Disable interrupts
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 184
F000:BC6F 80 26 003F 7F and dsk_motor_stat,7Fh ; (0040:003F=0)
F000:BC74 80 26 003E 7F and dsk_recal_stat,7Fh ; (0040:003E=0)
F000:BC79 A0 003F mov al,dsk_motor_stat ; (0040:003F=0)
F000:BC7C C0 C0 04 rol al,4 ; Rotate
F000:BC7F 24 FB and al,0FBh
F000:BC81 0C 08 or al,8
F000:BC83 BA 03F2 mov dx,3F2h
F000:BC86 EE out dx,al ; port 3F2h, dsk0 contrl output
F000:BC87 B9 0001 mov cx,1
F000:BC8A E8 33DB call sub_264 ; (F068)
F000:BC8D 0C 0C or al,0Ch
F000:BC8F EE out dx,al ; port 3F2h, dsk0 contrl output
F000:BC90 B8 9001 mov ax,9001h
F000:BC93 CD 15 int 15h ; General services, ah=func 90h
; device busy, al=type
F000:BC95 FB sti ; Enable interrupts
F000:BC96 72 03 jc short loc_911 ; Jump if carry Set
F000:BC98 E8 003B call sub_163 ; (BCD6)
F000:BC9B loc_911: ; xref F000:BC96
F000:BC9B B4 80 mov ah,80h
F000:BC9D 72 07 jc short loc_ret_912 ; Jump if carry Set
F000:BC9F 80 26 003E 7F and dsk_recal_stat,7Fh ; (0040:003E=0)
F000:BCA4 32 E4 xor ah,ah ; Zero register
F000:BCA6 loc_ret_912: ; xref F000:BC9D
F000:BCA6 C3 retn
sub_160 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B123
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_161 proc near
F000:BCA7 loc_913: ; xref F000:AED6
F000:BCA7 1E push ds
F000:BCA8 33 DB xor bx,bx ; Zero register
F000:BCAA 8E DB mov ds,bx
F000:BCAC C5 1E 0078 lds bx,dword ptr ds:disk_parm_off ; (0000:0078=522h) Load 32 bit ptr
F000:BCB0 B0 03 mov al,3
F000:BCB2 8A 27 mov ah,[bx]
F000:BCB4 8B F0 mov si,ax
F000:BCB6 8A 47 01 mov al,[bx+1]
F000:BCB9 8B F8 mov di,ax
F000:BCBB B5 03 mov ch,3
F000:BCBD 1F pop ds
F000:BCBE 80 0E 003E 80 or byte ptr ds:data_34e,80h ; (C000:003E=39h)
F000:BCC3 E8 FE76 call sub_155 ; (BB3C)
F000:BCC6 E9 F210 jmp loc_708 ; (AED9)
sub_161 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 185
; Called from: F000:AF17, AF5A, AFC9, BA40
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_162 proc near
F000:BCC9 F9 stc ; Set carry flag
F000:BCCA C3 retn
sub_162 endp
F000:BCCB E8 B6 33 75 04 3C db 0E8h, 0B6h, 33h, 75h, 4, 3Ch
F000:BCD1 03 74 01 F9 C3 db 3, 74h, 1, 0F9h, 0C3h
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B4AB, BB59, BC98
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_163 proc near
F000:BCD6 BB 003E mov bx,3Eh
F000:BCD9 33 C9 xor cx,cx ; Zero register
F000:BCDB E8 32C4 call sub_262 ; (EFA2)
F000:BCDE 73 05 jnc short loc_ret_914 ; Jump if carry=0
F000:BCE0 33 C9 xor cx,cx ; Zero register
F000:BCE2 E8 32BD call sub_262 ; (EFA2)
F000:BCE5 loc_ret_914: ; xref F000:BCDE
F000:BCE5 C3 retn
sub_163 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:97CF
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_164 proc near
F000:BCE6 E8 D11E call sub_31 ; (8E07)
F000:BCE9 FA cli ; Disable interrupts
F000:BCEA 55 push bp
F000:BCEB B9 004A mov cx,4Ah
F000:BCEE 2B E1 sub sp,cx
F000:BCF0 8B EC mov bp,sp
F000:BCF2 BC FD00 mov sp,0FD00h
F000:BCF5 55 push bp
F000:BCF6 locloop_915: ; xref F000:BCFB
F000:BCF6 C6 46 00 00 mov byte ptr [bp],0
F000:BCFA 45 inc bp
F000:BCFB E2 F9 loop locloop_915 ; Loop if cx > 0
F000:BCFD 5D pop bp
F000:BCFE B0 8E mov al,8Eh
F000:BD00 E8 319C call sub_257 ; (EE9F)
F000:BD03 A8 C0 test al,0C0h
F000:BD05 75 16 jnz short loc_917 ; Jump if not zero
F000:BD07 33 FF xor di,di ; Zero register
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 186
F000:BD09 B4 90 mov ah,90h
F000:BD0B loc_916: ; xref F000:BD19
F000:BD0B 8A C4 mov al,ah
F000:BD0D E8 318F call sub_257 ; (EE9F)
F000:BD10 88 43 10 mov [bp+di+10h],al
F000:BD13 47 inc di
F000:BD14 FE C4 inc ah
F000:BD16 80 FC C0 cmp ah,0C0h
F000:BD19 75 F0 jne loc_916 ; Jump if not equal
F000:BD1B EB 00 jmp short loc_917 ; (BD1D)
F000:BD1D loc_917: ; xref F000:BD05, BD1B
F000:BD1D FB sti ; Enable interrupts
F000:BD1E B4 0F mov ah,0Fh
F000:BD20 CD 10 int 10h ; Video display ah=functn 0Fh
; get state, al=mode, bh=page
F000:BD22 3C 07 cmp al,7
F000:BD24 74 02 je short loc_918 ; Jump if equal
F000:BD26 B0 03 mov al,3
F000:BD28 loc_918: ; xref F000:BD24
F000:BD28 B4 00 mov ah,0
F000:BD2A CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:BD2C B7 00 mov bh,0
F000:BD2E B4 03 mov ah,3
F000:BD30 CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:BD32 80 E5 9F and ch,9Fh
F000:BD35 80 CD 20 or ch,20h ; ' '
F000:BD38 B4 01 mov ah,1
F000:BD3A CD 10 int 10h ; Video display ah=functn 01h
; set cursor mode in cx
F000:BD3C 2E: A0 E058 mov al,cs:data_149 ; (F000:E058=0FFh)
F000:BD40 0A C0 or al,al ; Zero ?
F000:BD42 BB C838 mov bx,0C838h
F000:BD45 74 09 jz short loc_919 ; Jump if zero
F000:BD47 BB C828 mov bx,0C828h
F000:BD4A BE D812 mov si,0D812h
F000:BD4D E8 0926 call sub_182 ; (C676)
F000:BD50 loc_919: ; xref F000:BD45
F000:BD50 BE D827 mov si,0D827h
F000:BD53 E8 0920 call sub_182 ; (C676)
F000:BD56 BE D83B mov si,0D83Bh
F000:BD59 E8 091A call sub_182 ; (C676)
F000:BD5C loc_920: ; xref F000:BD6E
F000:BD5C 83 C3 04 add bx,4
F000:BD5F loc_921: ; xref F000:BD70
F000:BD5F 2E: 8B 07 mov ax,cs:[bx]
F000:BD62 89 46 00 mov [bp],ax
F000:BD65 2E: 8B 47 02 mov ax,cs:[bx+2]
F000:BD69 FF D0 call ax ;*
F000:BD6B 8B 5E 00 mov bx,[bp]
F000:BD6E 73 EC jnc loc_920 ; Jump if carry=0
F000:BD70 74 ED jz loc_921 ; Jump if zero
F000:BD72 0A C0 or al,al ; Zero ?
F000:BD74 74 17 jz short loc_922 ; Jump if zero
F000:BD76 FE C8 dec al
F000:BD78 74 27 jz short loc_923 ; Jump if zero
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 187
F000:BD7A 1E push ds
F000:BD7B 33 C0 xor ax,ax ; Zero register
F000:BD7D 8E D8 mov ds,ax
assume ds:seg_a
F000:BD7F A1 0467 mov ax,@gen_io_ptr_ ; (0000:0467=522h)
F000:BD82 A3 0413 mov main_ram_size_,ax ; (0000:0413=280h)
F000:BD85 1F pop ds
F000:BD86 B8 0003 mov ax,3
F000:BD89 FF D0 call ax ;*
F000:BD8B EB 14 jmp short loc_923 ; (BDA1)
F000:BD8D loc_922: ; xref F000:BD74
F000:BD8D B7 00 mov bh,0
F000:BD8F B4 03 mov ah,3
F000:BD91 CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:BD93 80 E5 9F and ch,9Fh
F000:BD96 B4 01 mov ah,1
F000:BD98 CD 10 int 10h ; Video display ah=functn 01h
; set cursor mode in cx
F000:BD9A 8B E5 mov sp,bp
F000:BD9C 83 C4 4A add sp,4Ah
F000:BD9F 5D pop bp
F000:BDA0 C3 retn
F000:BDA1 loc_923: ; xref F000:BD78, BD8B
F000:BDA1 B4 0F mov ah,0Fh
F000:BDA3 CD 10 int 10h ; Video display ah=functn 0Fh
; get state, al=mode, bh=page
F000:BDA5 B4 00 mov ah,0
F000:BDA7 CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:BDA9 FA cli ; Disable interrupts
F000:BDAA FC cld ; Clear direction
F000:BDAB B8 268A mov ax,268Ah
F000:BDAE E8 30FD call sub_258 ; (EEAE)
F000:BDB1 B8 828B mov ax,828Bh
F000:BDB4 E8 30F7 call sub_258 ; (EEAE)
F000:BDB7 B0 8D mov al,8Dh
F000:BDB9 E8 30E3 call sub_257 ; (EE9F)
F000:BDBC B0 8C mov al,8Ch
F000:BDBE E8 30DE call sub_257 ; (EE9F)
F000:BDC1 FB sti ; Enable interrupts
F000:BDC2 BB 0007 mov bx,7
F000:BDC5 BE D84E mov si,0D84Eh
F000:BDC8 E8 08AB call sub_182 ; (C676)
F000:BDCB B2 00 mov dl,0
F000:BDCD E8 0962 call sub_190 ; (C732)
F000:BDD0 B2 4E mov dl,4Eh ; 'N'
F000:BDD2 E8 095D call sub_190 ; (C732)
F000:BDD5 B6 00 mov dh,0
F000:BDD7 E8 096B call sub_191 ; (C745)
F000:BDDA B8 0EC9 mov ax,0EC9h
F000:BDDD CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:BDDF BA 004E mov dx,4Eh
F000:BDE2 B0 BB mov al,0BBh
F000:BDE4 E8 09AE call sub_195 ; (C795)
F000:BDE7 B6 02 mov dh,2
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 188
F000:BDE9 E8 0959 call sub_191 ; (C745)
F000:BDEC B8 0ECC mov ax,0ECCh
F000:BDEF CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:BDF1 B6 18 mov dh,18h
F000:BDF3 E8 094F call sub_191 ; (C745)
F000:BDF6 B8 0EC8 mov ax,0EC8h
F000:BDF9 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:BDFB BA 024E mov dx,24Eh
F000:BDFE B0 B9 mov al,0B9h
F000:BE00 E8 0992 call sub_195 ; (C795)
F000:BE03 BA 0228 mov dx,228h
F000:BE06 B0 CB mov al,0CBh
F000:BE08 E8 098A call sub_195 ; (C795)
F000:BE0B BA 064E mov dx,64Eh
F000:BE0E B0 B9 mov al,0B9h
F000:BE10 E8 0982 call sub_195 ; (C795)
F000:BE13 BA 0628 mov dx,628h
F000:BE16 B0 C8 mov al,0C8h
F000:BE18 E8 097A call sub_195 ; (C795)
F000:BE1B B8 09CD mov ax,9CDh
F000:BE1E B9 0025 mov cx,25h
F000:BE21 CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:BE23 E8 133B call sub_210 ; (D161)
F000:BE26 E8 0667 call sub_177 ; (C490)
F000:BE29 B6 12 mov dh,12h
F000:BE2B E8 0926 call sub_192 ; (C754)
F000:BE2E B6 16 mov dh,16h
F000:BE30 E8 0921 call sub_192 ; (C754)
F000:BE33 E8 1837 call sub_221 ; (D66D)
F000:BE36 B4 05 mov ah,5
F000:BE38 CD 1A int 1Ah ; Real time clock ah=func 05h
; set date cx=year, dx=mon/day
F000:BE3A E8 186A call sub_222 ; (D6A7)
F000:BE3D B4 03 mov ah,3
F000:BE3F CD 1A int 1Ah ; Real time clock ah=func 03h
; set clock cx=hrs/min, dh=sec
F000:BE41 80 66 14 F3 and byte ptr [bp+14h],0F3h
F000:BE45 80 4E 14 01 or byte ptr [bp+14h],1
F000:BE49 BB 0007 mov bx,7
F000:BE4C BA 033E mov dx,33Eh
F000:BE4F 1E push ds
F000:BE50 33 C0 xor ax,ax ; Zero register
F000:BE52 8E D8 mov ds,ax
F000:BE54 A1 0467 mov ax,@gen_io_ptr_ ; (0000:0467=522h)
F000:BE57 1F pop ds
F000:BE58 89 46 15 mov [bp+15h],ax
F000:BE5B E8 0920 call sub_194 ; (C77E)
F000:BE5E BA 043E mov dx,43Eh
F000:BE61 B4 88 mov ah,88h
F000:BE63 CD 15 int 15h ; General services, ah=func 88h
; get extended mem size/1Kb= ax
F000:BE65 89 46 17 mov [bp+17h],ax
F000:BE68 E8 0913 call sub_194 ; (C77E)
F000:BE6B CD 11 int 11h ; Put equipment bits in ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 189
F000:BE6D 80 66 14 FD and byte ptr [bp+14h],0FDh
F000:BE71 24 02 and al,2
F000:BE73 74 04 jz short loc_924 ; Jump if zero
F000:BE75 80 4E 14 02 or byte ptr [bp+14h],2
F000:BE79 loc_924: ; xref F000:BE73
F000:BE79 8A D0 mov dl,al
F000:BE7B 9C pushf ; Push flags
F000:BE7C FA cli ; Disable interrupts
F000:BE7D B8 F000 mov ax,seg_d
F000:BE80 50 push ax
F000:BE81 9D popf ; Pop flags
F000:BE82 9C pushf ; Push flags
F000:BE83 58 pop ax
F000:BE84 80 E4 F0 and ah,0F0h
F000:BE87 74 0E jz short loc_925 ; Jump if zero
F000:BE89 66| 33 C0 xor eax,eax ; Zero register
F000:BE8C CD 11 int 11h ; Put equipment bits in ax
F000:BE8E 66| C1 E0 08 shl eax,8 ; Shift w/zeros fill
F000:BE92 73 03 jnc short loc_925 ; Jump if carry=0
F000:BE94 80 CA 01 or dl,1
F000:BE97 loc_925: ; xref F000:BE87, BE92
F000:BE97 9D popf ; Pop flags
F000:BE98 8A C2 mov al,dl
F000:BE9A BE C7E8 mov si,0C7E8h
F000:BE9D E8 093C call sub_198 ; (C7DC)
F000:BEA0 BA 053D mov dx,53Dh
F000:BEA3 E8 07C9 call sub_181 ; (C66F)
F000:BEA6 1E push ds
F000:BEA7 33 C0 xor ax,ax ; Zero register
F000:BEA9 8E D8 mov ds,ax
F000:BEAB A1 0490 mov ax,word ptr hdsk0_media_st_ ; (0000:0490=702h)
F000:BEAE 1F pop ds
F000:BEAF 24 07 and al,7
F000:BEB1 74 10 jz short loc_926 ; Jump if zero
F000:BEB3 3C 02 cmp al,2
F000:BEB5 74 0C je short loc_926 ; Jump if equal
F000:BEB7 3C 03 cmp al,3
F000:BEB9 B0 01 mov al,1
F000:BEBB 74 06 jz short loc_926 ; Jump if zero
F000:BEBD 8A 46 10 mov al,[bp+10h]
F000:BEC0 C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:BEC3 loc_926: ; xref F000:BEB1, BEB5, BEBB
F000:BEC3 50 push ax
F000:BEC4 BA 0516 mov dx,516h
F000:BEC7 E8 0572 call sub_174 ; (C43C)
F000:BECA 58 pop ax
F000:BECB 86 C4 xchg al,ah
F000:BECD 24 07 and al,7
F000:BECF 74 0F jz short loc_927 ; Jump if zero
F000:BED1 3C 02 cmp al,2
F000:BED3 74 0B je short loc_927 ; Jump if equal
F000:BED5 3C 03 cmp al,3
F000:BED7 B0 01 mov al,1
F000:BED9 74 05 jz short loc_927 ; Jump if zero
F000:BEDB 8A 46 10 mov al,[bp+10h]
F000:BEDE 24 0F and al,0Fh
F000:BEE0 loc_927: ; xref F000:BECF, BED3, BED9
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 190
F000:BEE0 50 push ax
F000:BEE1 BA 0616 mov dx,616h
F000:BEE4 E8 0555 call sub_174 ; (C43C)
F000:BEE7 58 pop ax
F000:BEE8 80 66 14 3F and byte ptr [bp+14h],3Fh ; '?'
F000:BEEC 0A C0 or al,al ; Zero ?
F000:BEEE 74 08 jz short loc_928 ; Jump if zero
F000:BEF0 0A E4 or ah,ah ; Zero ?
F000:BEF2 74 04 jz short loc_928 ; Jump if zero
F000:BEF4 80 4E 14 40 or byte ptr [bp+14h],40h ; '@'
F000:BEF8 loc_928: ; xref F000:BEEE, BEF2
F000:BEF8 C0 E4 04 shl ah,4 ; Shift w/zeros fill
F000:BEFB 0A C4 or al,ah
F000:BEFD 88 46 10 mov [bp+10h],al
F000:BF00 C7 46 06 0000 mov word ptr [bp+6],0
F000:BF05 8A 46 12 mov al,[bp+12h]
F000:BF08 C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:BF0B 24 0F and al,0Fh
F000:BF0D 3C 0F cmp al,0Fh
F000:BF0F 75 03 jne short loc_929 ; Jump if not equal
F000:BF11 8A 46 19 mov al,[bp+19h]
F000:BF14 loc_929: ; xref F000:BF0F
F000:BF14 BA 0816 mov dx,816h
F000:BF17 E8 036B call sub_166 ; (C285)
F000:BF1A C7 46 06 0009 mov word ptr [bp+6],9
F000:BF1F 8A 46 12 mov al,[bp+12h]
F000:BF22 24 0F and al,0Fh
F000:BF24 3C 0F cmp al,0Fh
F000:BF26 75 03 jne short loc_930 ; Jump if not equal
F000:BF28 8A 46 1A mov al,[bp+1Ah]
F000:BF2B loc_930: ; xref F000:BF26
F000:BF2B BA 0916 mov dx,916h
F000:BF2E E8 0354 call sub_166 ; (C285)
F000:BF31 CD 11 int 11h ; Put equipment bits in ax
F000:BF33 1E push ds
F000:BF34 33 F6 xor si,si ; Zero register
F000:BF36 8E DE mov ds,si
F000:BF38 8C CE mov si,cs
F000:BF3A 39 36 0042 cmp vectr_10h_seg,si ; (0000:0042=0D3D1h)
F000:BF3E 1F pop ds
F000:BF3F 74 02 jz short loc_931 ; Jump if zero
F000:BF41 B0 00 mov al,0
F000:BF43 loc_931: ; xref F000:BF3F
F000:BF43 24 30 and al,30h ; '0'
F000:BF45 80 66 14 CF and byte ptr [bp+14h],0CFh
F000:BF49 08 46 14 or [bp+14h],al
F000:BF4C F6 46 37 02 test byte ptr [bp+37h],2
F000:BF50 75 02 jnz short loc_932 ; Jump if not zero
F000:BF52 B0 40 mov al,40h ; '@'
F000:BF54 loc_932: ; xref F000:BF50
F000:BF54 C0 C0 04 rol al,4 ; Rotate
F000:BF57 BE C7F0 mov si,0C7F0h
F000:BF5A E8 087F call sub_198 ; (C7DC)
F000:BF5D BA 0A16 mov dx,0A16h
F000:BF60 E8 070C call sub_181 ; (C66F)
F000:BF63 F6 46 37 01 test byte ptr [bp+37h],1
F000:BF67 BE DA7F mov si,0DA7Fh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 191
F000:BF6A 74 03 jz short loc_933 ; Jump if zero
F000:BF6C BE DA6E mov si,0DA6Eh
F000:BF6F loc_933: ; xref F000:BF6A
F000:BF6F BA 0B16 mov dx,0B16h
F000:BF72 E8 06FA call sub_181 ; (C66F)
F000:BF75 E8 07F3 call sub_193 ; (C76B)
F000:BF78 F6 46 38 10 test byte ptr [bp+38h],10h
F000:BF7C BE DAC7 mov si,0DAC7h
F000:BF7F 74 03 jz short loc_934 ; Jump if zero
F000:BF81 BE DAC2 mov si,0DAC2h
F000:BF84 loc_934: ; xref F000:BF7F
F000:BF84 BA 0D16 mov dx,0D16h
F000:BF87 E8 06E5 call sub_181 ; (C66F)
F000:BF8A F6 46 38 40 test byte ptr [bp+38h],40h ; '@'
F000:BF8E BE DA9C mov si,0DA9Ch
F000:BF91 74 03 jz short loc_935 ; Jump if zero
F000:BF93 BE DA90 mov si,0DA90h
F000:BF96 loc_935: ; xref F000:BF91
F000:BF96 BA 0E16 mov dx,0E16h
F000:BF99 E8 06D3 call sub_181 ; (C66F)
F000:BF9C E8 1202 call sub_211 ; (D1A1)
F000:BF9F BB C848 mov bx,0C848h
F000:BFA2 EB 03 jmp short loc_937 ; (BFA7)
F000:BFA4 loc_936: ; xref F000:BFCA
F000:BFA4 83 C3 04 add bx,4
F000:BFA7 loc_937: ; xref F000:BFA2, BFCC
F000:BFA7 2E: 8B 07 mov ax,cs:[bx]
F000:BFAA 89 46 00 mov [bp],ax
F000:BFAD loc_938: ; xref F000:C002
F000:BFAD 53 push bx
F000:BFAE B7 00 mov bh,0
F000:BFB0 B4 03 mov ah,3
F000:BFB2 CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:BFB4 80 E5 9F and ch,9Fh
F000:BFB7 80 CD 20 or ch,20h ; ' '
F000:BFBA B4 01 mov ah,1
F000:BFBC CD 10 int 10h ; Video display ah=functn 01h
; set cursor mode in cx
F000:BFBE 5B pop bx
F000:BFBF 2E: 8B 47 02 mov ax,cs:[bx+2]
F000:BFC3 53 push bx
F000:BFC4 FF D0 call ax ;*
F000:BFC6 58 pop ax
F000:BFC7 8B 5E 00 mov bx,[bp]
F000:BFCA 73 D8 jnc loc_936 ; Jump if carry=0
F000:BFCC 74 D9 jz loc_937 ; Jump if zero
F000:BFCE 50 push ax
F000:BFCF B7 00 mov bh,0
F000:BFD1 B4 03 mov ah,3
F000:BFD3 CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:BFD5 80 E5 9F and ch,9Fh
F000:BFD8 B4 01 mov ah,1
F000:BFDA CD 10 int 10h ; Video display ah=functn 01h
; set cursor mode in cx
F000:BFDC BE DE70 mov si,0DE70h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 192
F000:BFDF BA 1406 mov dx,1406h
F000:BFE2 E8 068A call sub_181 ; (C66F)
F000:BFE5 5B pop bx
F000:BFE6 loc_939: ; xref F000:BFFD, C022
F000:BFE6 B4 00 mov ah,0
F000:BFE8 CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:BFEA 3C 79 cmp al,79h ; 'y'
F000:BFEC 74 36 je short loc_944 ; Jump if equal
F000:BFEE 3C 59 cmp al,59h ; 'Y'
F000:BFF0 74 32 je short loc_944 ; Jump if equal
F000:BFF2 3C 6E cmp al,6Eh ; 'n'
F000:BFF4 74 0E je short loc_941 ; Jump if equal
F000:BFF6 3C 4E cmp al,4Eh ; 'N'
F000:BFF8 74 0A je short loc_941 ; Jump if equal
F000:BFFA 80 FC 01 cmp ah,1
F000:BFFD 75 E7 jne loc_939 ; Jump if not equal
F000:BFFF loc_940: ; xref F000:C00E
F000:BFFF E8 048E call sub_177 ; (C490)
F000:C002 EB A9 jmp short loc_938 ; (BFAD)
F000:C004 loc_941: ; xref F000:BFF4, BFF8
F000:C004 B4 0E mov ah,0Eh
F000:C006 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C008 loc_942: ; xref F000:C012
F000:C008 B4 00 mov ah,0
F000:C00A CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:C00C 3C 0D cmp al,0Dh
F000:C00E 74 EF je loc_940 ; Jump if equal
F000:C010 3C 08 cmp al,8
F000:C012 75 F4 jne loc_942 ; Jump if not equal
F000:C014 loc_943: ; xref F000:C034
F000:C014 B4 0E mov ah,0Eh
F000:C016 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C018 B8 0E20 mov ax,0E20h
F000:C01B CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C01D B8 0E08 mov ax,0E08h
F000:C020 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C022 EB C2 jmp short loc_939 ; (BFE6)
F000:C024 loc_944: ; xref F000:BFEC, BFF0
F000:C024 B4 0E mov ah,0Eh
F000:C026 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C028 loc_945: ; xref F000:C032
F000:C028 B4 00 mov ah,0
F000:C02A CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:C02C 3C 0D cmp al,0Dh
F000:C02E 74 06 je short loc_946 ; Jump if equal
F000:C030 3C 08 cmp al,8
F000:C032 75 F4 jne loc_945 ; Jump if not equal
F000:C034 EB DE jmp short loc_943 ; (C014)
F000:C036 loc_946: ; xref F000:C02E
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 193
F000:C036 E8 11BA call sub_212 ; (D1F3)
F000:C039 FA cli ; Disable interrupts
F000:C03A BE 0010 mov si,10h
F000:C03D B0 90 mov al,90h
F000:C03F loc_947: ; xref F000:C04D
F000:C03F 8A 22 mov ah,[bp+si]
F000:C041 3C B2 cmp al,0B2h
F000:C043 74 03 je short loc_948 ; Jump if equal
F000:C045 E8 2E66 call sub_258 ; (EEAE)
F000:C048 loc_948: ; xref F000:C043
F000:C048 46 inc si
F000:C049 FE C0 inc al
F000:C04B 3C C0 cmp al,0C0h
F000:C04D 75 F0 jne loc_947 ; Jump if not equal
F000:C04F 33 C9 xor cx,cx ; Zero register
F000:C051 33 D2 xor dx,dx ; Zero register
F000:C053 B8 9090 mov ax,9090h
F000:C056 loc_949: ; xref F000:C063
F000:C056 E8 2E46 call sub_257 ; (EE9F)
F000:C059 8A C8 mov cl,al
F000:C05B 03 D1 add dx,cx
F000:C05D FE C4 inc ah
F000:C05F 8A C4 mov al,ah
F000:C061 3C AE cmp al,0AEh
F000:C063 75 F1 jne loc_949 ; Jump if not equal
F000:C065 8A E6 mov ah,dh
F000:C067 E8 2E44 call sub_258 ; (EEAE)
F000:C06A 8A E2 mov ah,dl
F000:C06C B0 AF mov al,0AFh
F000:C06E E8 2E3D call sub_258 ; (EEAE)
F000:C071 B8 008E mov ax,8Eh
F000:C074 E8 2E37 call sub_258 ; (EEAE)
F000:C077 B8 008F mov ax,8Fh
F000:C07A E8 2E31 call sub_258 ; (EEAE)
F000:C07D 1E push ds
F000:C07E 33 C0 xor ax,ax ; Zero register
F000:C080 8E D8 mov ds,ax
F000:C082 A2 0472 mov byte ptr warm_boot_flag_,al ; (0000:0472=0)
F000:C085 1F pop ds
F000:C086 EA F000FFF0 jmp far ptr power_on_reset ; (FFF0)
sub_164 endp
F000:C08B BE 12 D8 EB 08 BE db 0BEh, 12h, 0D8h, 0EBh, 8, 0BEh
F000:C091 27 D8 EB 03 BE 3B db 27h, 0D8h, 0EBh, 3, 0BEh, 3Bh
F000:C097 D8 56 E8 CD 05 E8 db 0D8h, 56h, 0E8h, 0CDh, 5, 0E8h
F000:C09D 23 06 5E 9C E8 D2 db 23h, 6, 5Eh, 9Ch, 0E8h, 0D2h
F000:C0A3 05 9D 2E 8A 04 C3 db 5, 9Dh, 2Eh, 8Ah, 4, 0C3h
F000:C0A9 8A 46 14 24 30 F6 db 8Ah, 46h, 14h, 24h, 30h, 0F6h
F000:C0AF 46 37 02 75 02 B0 db 46h, 37h, 2, 75h, 2, 0B0h
F000:C0B5 40 C0 C0 04 BE FA db 40h, 0C0h, 0C0h, 4, 0BEh, 0FAh
F000:C0BB C7 E8 1D 07 8B DE db 0C7h, 0E8h, 1Dh, 7, 8Bh, 0DEh
F000:C0C1 BE 30 DC BA 16 0A db 0BEh, 30h, 0DCh, 0BAh, 16h, 0Ah
F000:C0C7 E8 8F 03 9C 80 66 db 0E8h, 8Fh, 3, 9Ch, 80h, 66h
F000:C0CD 37 FD 0A C0 74 04 db 37h, 0FDh, 0Ah, 0C0h, 74h, 4
F000:C0D3 80 4E 37 02 db 80h, 4Eh, 37h, 2
F000:C0D7 loc_950:
F000:C0D7 24 30 and al,30h ; '0'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 194
F000:C0D9 80 66 14 CF and byte ptr [bp+14h],0CFh
F000:C0DD 08 46 14 or [bp+14h],al
F000:C0E0 9D popf ; Pop flags
F000:C0E1 C3 retn
F000:C0E2 BF 37 00 BE 5B DD db 0BFh, 37h, 0, 0BEh, 5Bh, 0DDh
F000:C0E8 BA 16 0B B0 01 EB db 0BAh, 16h, 0Bh, 0B0h, 1, 0EBh
F000:C0EE 00 84 03 BB 10 C9 db 0, 84h, 3, 0BBh, 10h, 0C9h
F000:C0F4 74 21 BB 08 C9 EB db 74h, 21h, 0BBh, 8, 0C9h, 0EBh
F000:C0FA 1C 03 C1 7E C1 03 db 1Ch, 3, 0C1h, 7Eh, 0C1h, 3
F000:C100 C1 7E C1 FB C0 83 db 0C1h, 7Eh, 0C1h, 0FBh, 0C0h, 83h
F000:C106 C1 FB C0 83 C1 84 db 0C1h, 0FBh, 0C0h, 83h, 0C1h, 84h
F000:C10C 03 BB 03 C1 74 05 db 3, 0BBh, 3, 0C1h, 74h, 5
F000:C112 BB FB C0 EB 00 db 0BBh, 0FBh, 0C0h, 0EBh, 0
F000:C117 loc_951:
F000:C117 57 push di
F000:C118 50 push ax
F000:C119 E8 033D call sub_175 ; (C459)
F000:C11C 59 pop cx
F000:C11D 5F pop di
F000:C11E 9C pushf ; Push flags
F000:C11F F6 D1 not cl
F000:C121 20 0B and [bp+di],cl
F000:C123 0A C0 or al,al ; Zero ?
F000:C125 74 04 jz short loc_952 ; Jump if zero
F000:C127 F6 D1 not cl
F000:C129 08 0B or [bp+di],cl
F000:C12B loc_952: ; xref F000:C125
F000:C12B 9D popf ; Pop flags
F000:C12C C3 retn
F000:C12D 56 E8 31 05 E8 84 db 56h, 0E8h, 31h, 5, 0E8h, 84h
F000:C133 05 5E 9C E8 36 05 db 5, 5Eh, 9Ch, 0E8h, 36h, 5
F000:C139 9D 2E 8A 04 C3 46 db 9Dh, 2Eh, 8Ah, 4, 0C3h, 46h
F000:C13F C1 65 C1 46 C1 65 db 0C1h, 65h, 0C1h, 46h, 0C1h, 65h
F000:C145 C1 3E C1 6A C1 3E db 0C1h, 3Eh, 0C1h, 6Ah, 0C1h, 3Eh
F000:C14B C1 6A C1 BF 38 00 db 0C1h, 6Ah, 0C1h, 0BFh, 38h, 0
F000:C151 BE AD DD BA 16 0D db 0BEh, 0ADh, 0DDh, 0BAh, 16h, 0Dh
F000:C157 B0 10 84 03 BB 3E db 0B0h, 10h, 84h, 3, 0BBh, 3Eh
F000:C15D C1 74 B7 BB 46 C1 db 0C1h, 74h, 0B7h, 0BBh, 46h, 0C1h
F000:C163 EB B2 BE C7 DA EB db 0EBh, 0B2h, 0BEh, 0C7h, 0DAh, 0EBh
F000:C169 C3 BE C2 DA EB BE db 0C3h, 0BEh, 0C2h, 0DAh, 0EBh, 0BEh
F000:C16F BF 38 00 BE 2E DE db 0BFh, 38h, 0, 0BEh, 2Eh, 0DEh
F000:C175 BA 16 0C B0 20 E8 db 0BAh, 16h, 0Ch, 0B0h, 20h, 0E8h
F000:C17B 8E FF C3 BE 90 DA db 8Eh, 0FFh, 0C3h, 0BEh, 90h, 0DAh
F000:C181 EB AA BE 9C DA EB db 0EBh, 0AAh, 0BEh, 9Ch, 0DAh, 0EBh
F000:C187 A5 BF 38 00 BE 2E db 0A5h, 0BFh, 38h, 0, 0BEh, 2Eh
F000:C18D DE BA 16 0E B0 40 db 0DEh, 0BAh, 16h, 0Eh, 0B0h, 40h
F000:C193 E9 75 FF 8A 46 10 db 0E9h, 75h, 0FFh, 8Ah, 46h, 10h
F000:C199 C0 E8 04 BA 16 05 db 0C0h, 0E8h, 4, 0BAh, 16h, 5
F000:C19F E8 A6 02 9C 80 66 db 0E8h, 0A6h, 2, 9Ch, 80h, 66h
F000:C1A5 10 0F C0 E0 04 EB db 10h, 0Fh, 0C0h, 0E0h, 4, 0EBh
F000:C1AB 0E 8A 46 10 BA 16 db 0Eh, 8Ah, 46h, 10h, 0BAh, 16h
F000:C1B1 06 E8 93 02 9C 80 db 6, 0E8h, 93h, 2, 9Ch, 80h
F000:C1B7 66 10 F0 50 8A 66 db 66h, 10h, 0F0h, 50h, 8Ah, 66h
F000:C1BD 10 08 46 10 80 66 db 10h, 8, 46h, 10h, 80h, 66h
F000:C1C3 14 3F 0A C0 74 08 db 14h, 3Fh, 0Ah, 0C0h, 74h, 8
F000:C1C9 0A E4 74 04 80 4E db 0Ah, 0E4h, 74h, 4, 80h, 4Eh
F000:C1CF 14 db 14h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 195
F000:C1D0 40 db 40h
F000:C1D1 loc_953:
F000:C1D1 58 pop ax
F000:C1D2 9D popf ; Pop flags
F000:C1D3 C3 retn
F000:C1D4 C7 46 06 00 00 8A db 0C7h, 46h, 6, 0, 0, 8Ah
F000:C1DA 46 12 C0 E8 04 24 db 46h, 12h, 0C0h, 0E8h, 4, 24h
F000:C1E0 0F 3C 0F 75 03 8A db 0Fh, 3Ch, 0Fh, 75h, 3, 8Ah
F000:C1E6 46 19 BA 16 08 E8 db 46h, 19h, 0BAh, 16h, 8, 0E8h
F000:C1EC 50 00 9C 3C 0F 73 db 50h, 0, 9Ch, 3Ch, 0Fh, 73h
F000:C1F2 10 C0 E0 04 80 66 db 10h, 0C0h, 0E0h, 4, 80h, 66h
F000:C1F8 12 0F 08 46 12 C6 db 12h, 0Fh, 8, 46h, 12h, 0C6h
F000:C1FE 46 19 00 9D C3 db 46h, 19h, 0, 9Dh, 0C3h
F000:C203 loc_954:
F000:C203 80 4E 12 F0 or byte ptr [bp+12h],0F0h
F000:C207 88 46 19 mov [bp+19h],al
F000:C20A 9D popf ; Pop flags
F000:C20B C3 retn
F000:C20C C7 46 06 09 00 8A db 0C7h, 46h, 6, 9, 0, 8Ah
F000:C212 46 12 24 0F 3C 0F db 46h, 12h, 24h, 0Fh, 3Ch, 0Fh
F000:C218 75 03 8A 46 1A BA db 75h, 3, 8Ah, 46h, 1Ah, 0BAh
F000:C21E 16 09 E8 1B 00 9C db 16h, 9, 0E8h, 1Bh, 0, 9Ch
F000:C224 3C 0F 73 0D 80 66 db 3Ch, 0Fh, 73h, 0Dh, 80h, 66h
F000:C22A 12 F0 08 46 12 C6 db 12h, 0F0h, 8, 46h, 12h, 0C6h
F000:C230 46 1A 00 9D C3 db 46h, 1Ah, 0, 9Dh, 0C3h
F000:C235 loc_955:
F000:C235 80 4E 12 0F or byte ptr [bp+12h],0Fh
F000:C239 88 46 1A mov [bp+1Ah],al
F000:C23C 9D popf ; Pop flags
F000:C23D C3 retn
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_165 proc near
F000:C23E C6 46 09 FF mov byte ptr [bp+9],0FFh
F000:C242 89 56 04 mov [bp+4],dx
F000:C245 BE DCD4 mov si,0DCD4h
F000:C248 E8 023A call sub_176 ; (C485)
F000:C24B loc_956: ; xref F000:C26C, C270, C27A, C27E
F000:C24B 88 46 08 mov [bp+8],al
F000:C24E E8 003E call sub_167 ; (C28F)
F000:C251 8A 46 08 mov al,[bp+8]
F000:C254 9C pushf ; Push flags
F000:C255 73 29 jnc short loc_959 ; Jump if carry=0
F000:C257 74 27 jz short loc_959 ; Jump if zero
F000:C259 80 FC 01 cmp ah,1
F000:C25C 74 22 je short loc_959 ; Jump if equal
F000:C25E 9D popf ; Pop flags
F000:C25F 80 FC 49 cmp ah,49h ; 'I'
F000:C262 74 0E je short loc_958 ; Jump if equal
F000:C264 loc_957: ; xref F000:C268
F000:C264 FE C0 inc al
F000:C266 3C 0F cmp al,0Fh
F000:C268 74 FA je loc_957 ; Jump if equal
F000:C26A 3C 30 cmp al,30h ; '0'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 196
F000:C26C 75 DD jne loc_956 ; Jump if not equal
F000:C26E B0 00 mov al,0
F000:C270 EB D9 jmp short loc_956 ; (C24B)
F000:C272 loc_958: ; xref F000:C262, C276
F000:C272 FE C8 dec al
F000:C274 3C 0F cmp al,0Fh
F000:C276 74 FA je loc_958 ; Jump if equal
F000:C278 3C FF cmp al,0FFh
F000:C27A 75 CF jne loc_956 ; Jump if not equal
F000:C27C B0 2F mov al,2Fh ; '/'
F000:C27E EB CB jmp short loc_956 ; (C24B)
F000:C280 loc_959: ; xref F000:C255, C257, C25C
F000:C280 E8 020D call sub_177 ; (C490)
F000:C283 9D popf ; Pop flags
F000:C284 C3 retn
sub_165 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BF17, BF2E
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_166 proc near
F000:C285 C6 46 09 00 mov byte ptr [bp+9],0
F000:C289 89 56 04 mov [bp+4],dx
F000:C28C 88 46 08 mov [bp+8],al
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:C24E
sub_167:
F000:C28F B4 00 mov ah,0
F000:C291 8A 46 08 mov al,[bp+8]
F000:C294 3C 2F cmp al,2Fh ; '/'
F000:C296 75 3D jne short loc_963 ; Jump if not equal
F000:C298 E8 0149 call sub_171 ; (C3E4)
F000:C29B 80 7E 09 00 cmp byte ptr [bp+9],0
F000:C29F 74 28 je short loc_962 ; Jump if equal
F000:C2A1 BB C938 mov bx,0C938h
F000:C2A4 50 push ax
F000:C2A5 loc_960: ; xref F000:C2C6
F000:C2A5 83 C3 04 add bx,4
F000:C2A8 loc_961: ; xref F000:C2C1
F000:C2A8 58 pop ax
F000:C2A9 2E: 8B 07 mov ax,cs:[bx]
F000:C2AC 89 46 02 mov [bp+2],ax
F000:C2AF 2E: 8B 47 02 mov ax,cs:[bx+2]
F000:C2B3 FF D0 call ax ;*
F000:C2B5 9C pushf ; Push flags
F000:C2B6 50 push ax
F000:C2B7 E8 012A call sub_171 ; (C3E4)
F000:C2BA 58 pop ax
F000:C2BB 8B 5E 02 mov bx,[bp+2]
F000:C2BE 80 FC 4B cmp ah,4Bh ; 'K'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 197
F000:C2C1 74 E5 je loc_961 ; Jump if equal
F000:C2C3 80 FC 4D cmp ah,4Dh ; 'M'
F000:C2C6 74 DD je loc_960 ; Jump if equal
F000:C2C8 9D popf ; Pop flags
F000:C2C9 loc_962: ; xref F000:C29F
F000:C2C9 9C pushf ; Push flags
F000:C2CA BE DB54 mov si,0DB54h
F000:C2CD 8B 56 04 mov dx,[bp+4]
F000:C2D0 E8 039C call sub_181 ; (C66F)
F000:C2D3 9D popf ; Pop flags
F000:C2D4 C3 retn
F000:C2D5 loc_963: ; xref F000:C296
F000:C2D5 3C 00 cmp al,0
F000:C2D7 75 26 jne short loc_965 ; Jump if not equal
F000:C2D9 E8 0136 call sub_172 ; (C412)
F000:C2DC BE DA7F mov si,0DA7Fh
F000:C2DF 8B 56 04 mov dx,[bp+4]
F000:C2E2 E8 037D call sub_179 ; (C662)
F000:C2E5 80 7E 09 00 cmp byte ptr [bp+9],0
F000:C2E9 74 03 je short loc_964 ; Jump if equal
F000:C2EB E8 03CA call sub_183 ; (C6B8)
F000:C2EE loc_964: ; xref F000:C2E9
F000:C2EE 9C pushf ; Push flags
F000:C2EF 50 push ax
F000:C2F0 E8 012D call sub_173 ; (C420)
F000:C2F3 58 pop ax
F000:C2F4 BE DA7F mov si,0DA7Fh
F000:C2F7 8B 56 04 mov dx,[bp+4]
F000:C2FA E8 0372 call sub_181 ; (C66F)
F000:C2FD 9D popf ; Pop flags
F000:C2FE C3 retn
F000:C2FF loc_965: ; xref F000:C2D7
F000:C2FF 50 push ax
F000:C300 E8 010F call sub_172 ; (C412)
F000:C303 B8 0E20 mov ax,0E20h
F000:C306 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C308 58 pop ax
F000:C309 50 push ax
F000:C30A E8 040D call sub_188 ; (C71A)
F000:C30D 58 pop ax
F000:C30E 48 dec ax
F000:C30F C1 E0 04 shl ax,4 ; Shift w/zeros fill
F000:C312 05 E401 add ax,0E401h
F000:C315 53 push bx
F000:C316 8B D8 mov bx,ax
F000:C318 2E: 8B 07 mov ax,cs:[bx]
F000:C31B 89 46 40 mov [bp+40h],ax
F000:C31E 2E: 8A 47 02 mov al,cs:[bx+2]
F000:C322 88 46 42 mov [bp+42h],al
F000:C325 2E: 8B 47 05 mov ax,cs:[bx+5]
F000:C329 89 46 43 mov [bp+43h],ax
F000:C32C 2E: 8B 47 0C mov ax,cs:[bx+0Ch]
F000:C330 89 46 45 mov [bp+45h],ax
F000:C333 2E: 8A 47 0E mov al,cs:[bx+0Eh]
F000:C337 88 46 47 mov [bp+47h],al
F000:C33A 5B pop bx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 198
F000:C33B E8 001F call sub_168 ; (C35D)
F000:C33E 80 7E 09 00 cmp byte ptr [bp+9],0
F000:C342 74 03 je short loc_966 ; Jump if equal
F000:C344 E8 0371 call sub_183 ; (C6B8)
F000:C347 loc_966: ; xref F000:C342
F000:C347 9C pushf ; Push flags
F000:C348 50 push ax
F000:C349 E8 00D4 call sub_173 ; (C420)
F000:C34C B8 0E20 mov ax,0E20h
F000:C34F CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C351 8A 46 08 mov al,[bp+8]
F000:C354 E8 03C1 call sub_187 ; (C718)
F000:C357 E8 0008 call sub_169 ; (C362)
F000:C35A 58 pop ax
F000:C35B 9D popf ; Pop flags
F000:C35C C3 retn
sub_166 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:C33B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_168 proc near
F000:C35D BB 0070 mov bx,70h
F000:C360 EB 03 jmp short loc_967 ; (C365)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:C357, C40E
sub_169:
F000:C362 BB 0007 mov bx,7
F000:C365 loc_967: ; xref F000:C360
F000:C365 8A 46 47 mov al,[bp+47h]
F000:C368 B4 00 mov ah,0
F000:C36A 8A 56 42 mov dl,[bp+42h]
F000:C36D F6 E2 mul dl ; ax = reg * al
F000:C36F 8B 56 40 mov dx,[bp+40h]
F000:C372 F7 E2 mul dx ; dx:ax = reg * ax
F000:C374 B9 0800 mov cx,800h
F000:C377 3B D1 cmp dx,cx
F000:C379 72 05 jb short loc_968 ; Jump if below
F000:C37B B8 FFFF mov ax,0FFFFh
F000:C37E EB 0C jmp short loc_969 ; (C38C)
F000:C380 loc_968: ; xref F000:C379
F000:C380 F7 F1 div cx ; ax,dx rem=dx:ax/reg
F000:C382 D1 E9 shr cx,1 ; Shift w/zeros fill
F000:C384 3B CA cmp cx,dx
F000:C386 77 04 ja short loc_969 ; Jump if above
F000:C388 40 inc ax
F000:C389 75 01 jnz short loc_969 ; Jump if not zero
F000:C38B 48 dec ax
F000:C38C loc_969: ; xref F000:C37E, C386, C389
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 199
F000:C38C 89 46 48 mov [bp+48h],ax
F000:C38F 8B 56 04 mov dx,[bp+4]
F000:C392 80 C2 12 add dl,12h
F000:C395 8B 46 40 mov ax,[bp+40h]
F000:C398 E8 003A call sub_170 ; (C3D5)
F000:C39B 8A 46 42 mov al,[bp+42h]
F000:C39E B4 00 mov ah,0
F000:C3A0 E8 0032 call sub_170 ; (C3D5)
F000:C3A3 8B 46 43 mov ax,[bp+43h]
F000:C3A6 E8 002C call sub_170 ; (C3D5)
F000:C3A9 8B 46 45 mov ax,[bp+45h]
F000:C3AC E8 0026 call sub_170 ; (C3D5)
F000:C3AF 8A 46 47 mov al,[bp+47h]
F000:C3B2 B4 00 mov ah,0
F000:C3B4 E8 001E call sub_170 ; (C3D5)
F000:C3B7 8B 46 48 mov ax,[bp+48h]
F000:C3BA 40 inc ax
F000:C3BB 75 10 jnz short loc_971 ; Jump if not zero
F000:C3BD B4 02 mov ah,2
F000:C3BF CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C3C1 B9 0005 mov cx,5
F000:C3C4 locloop_970: ; xref F000:C3C9
F000:C3C4 B8 0E3F mov ax,0E3Fh
F000:C3C7 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C3C9 E2 F9 loop locloop_970 ; Loop if cx > 0
F000:C3CB EB 04 jmp short loc_972 ; (C3D1)
F000:C3CD loc_971: ; xref F000:C3BB
F000:C3CD 48 dec ax
F000:C3CE E8 0004 call sub_170 ; (C3D5)
F000:C3D1 loc_972: ; xref F000:C3CB
F000:C3D1 E8 0332 call sub_186 ; (C706)
F000:C3D4 C3 retn
sub_168 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:C398, C3A0, C3A6, C3AC, C3B4, C3CE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_170 proc near
F000:C3D5 52 push dx
F000:C3D6 50 push ax
F000:C3D7 B4 02 mov ah,2
F000:C3D9 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C3DB 58 pop ax
F000:C3DC E8 033B call sub_188 ; (C71A)
F000:C3DF 5A pop dx
F000:C3E0 80 C2 06 add dl,6
F000:C3E3 C3 retn
sub_170 endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 200
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:C298, C2B7
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_171 proc near
F000:C3E4 E8 0039 call sub_173 ; (C420)
F000:C3E7 BE DB54 mov si,0DB54h
F000:C3EA E8 0275 call sub_179 ; (C662)
F000:C3ED 8B 76 06 mov si,[bp+6]
F000:C3F0 8B 42 1B mov ax,[bp+si+1Bh]
F000:C3F3 89 46 40 mov [bp+40h],ax
F000:C3F6 8A 42 1D mov al,[bp+si+1Dh]
F000:C3F9 88 46 42 mov [bp+42h],al
F000:C3FC 8B 42 1E mov ax,[bp+si+1Eh]
F000:C3FF 89 46 43 mov [bp+43h],ax
F000:C402 8B 42 21 mov ax,[bp+si+21h]
F000:C405 89 46 45 mov [bp+45h],ax
F000:C408 8A 42 23 mov al,[bp+si+23h]
F000:C40B 88 46 47 mov [bp+47h],al
F000:C40E E8 FF51 call sub_169 ; (C362)
F000:C411 C3 retn
sub_171 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:C2D9, C300
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_172 proc near
F000:C412 BE DA46 mov si,0DA46h
F000:C415 BA 0727 mov dx,727h
F000:C418 E8 0247 call sub_179 ; (C662)
F000:C41B BB 0070 mov bx,70h
F000:C41E EB 0C jmp short loc_973 ; (C42C)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:C2F0, C349, C3E4
sub_173:
F000:C420 BE DA46 mov si,0DA46h
F000:C423 BA 0727 mov dx,727h
F000:C426 E8 0246 call sub_181 ; (C66F)
F000:C429 BB 0007 mov bx,7
F000:C42C loc_973: ; xref F000:C41E
F000:C42C 8B 56 04 mov dx,[bp+4]
F000:C42F B4 02 mov ah,2
F000:C431 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C433 B9 0038 mov cx,38h
F000:C436 B8 0920 mov ax,920h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 201
F000:C439 CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:C43B C3 retn
sub_172 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BEC7, BEE4
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_174 proc near
F000:C43C 24 0F and al,0Fh
F000:C43E BE C804 mov si,0C804h
F000:C441 E8 0398 call sub_198 ; (C7DC)
F000:C444 E8 0228 call sub_181 ; (C66F)
F000:C447 C3 retn
sub_174 endp
F000:C448 24 0F BE 0E C8 E8 db 24h, 0Fh, 0BEh, 0Eh, 0C8h, 0E8h
F000:C44E 8C 03 8B DE BE 82 db 8Ch, 3, 8Bh, 0DEh, 0BEh, 82h
F000:C454 DC E8 01 00 C3 db 0DCh, 0E8h, 1, 0, 0C3h
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:C119
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_175 proc near
F000:C459 E8 0029 call sub_176 ; (C485)
F000:C45C loc_974: ; xref F000:C47C
F000:C45C 83 C3 04 add bx,4
F000:C45F loc_975: ; xref F000:C47E
F000:C45F 2E: 8B 07 mov ax,cs:[bx]
F000:C462 89 46 02 mov [bp+2],ax
F000:C465 2E: 8B 47 02 mov ax,cs:[bx+2]
F000:C469 FF D0 call ax ;*
F000:C46B 9C pushf ; Push flags
F000:C46C 73 12 jnc short loc_976 ; Jump if carry=0
F000:C46E 74 10 jz short loc_976 ; Jump if zero
F000:C470 80 FC 01 cmp ah,1
F000:C473 74 0B je short loc_976 ; Jump if equal
F000:C475 9D popf ; Pop flags
F000:C476 8B 5E 02 mov bx,[bp+2]
F000:C479 80 FC 51 cmp ah,51h ; 'Q'
F000:C47C 74 DE je loc_974 ; Jump if equal
F000:C47E EB DF jmp short loc_975 ; (C45F)
F000:C480 loc_976: ; xref F000:C46C, C46E, C473
F000:C480 E8 000D call sub_177 ; (C490)
F000:C483 9D popf ; Pop flags
F000:C484 C3 retn
sub_175 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 202
; SUBROUTINE
;
; Called from: F000:C248, C459, D48F
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_176 proc near
F000:C485 50 push ax
F000:C486 52 push dx
F000:C487 BA 1301 mov dx,1301h
F000:C48A E8 01D5 call sub_179 ; (C662)
F000:C48D 5A pop dx
F000:C48E 58 pop ax
F000:C48F C3 retn
sub_176 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BE26, BFFF, C280, C480, D49C
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_177 proc near
F000:C490 50 push ax
F000:C491 53 push bx
F000:C492 51 push cx
F000:C493 52 push dx
F000:C494 BA 1301 mov dx,1301h
F000:C497 BB 0070 mov bx,70h
F000:C49A loc_977: ; xref F000:C4AB
F000:C49A B4 02 mov ah,2
F000:C49C CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C49E B9 0031 mov cx,31h
F000:C4A1 B8 0920 mov ax,920h
F000:C4A4 CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:C4A6 FE C6 inc dh
F000:C4A8 80 FE 16 cmp dh,16h
F000:C4AB 75 ED jne loc_977 ; Jump if not equal
F000:C4AD 5A pop dx
F000:C4AE 59 pop cx
F000:C4AF 5B pop bx
F000:C4B0 58 pop ax
F000:C4B1 C3 retn
sub_177 endp
F000:C4B2 BE CC DA E9 75 FC db 0BEh, 0CCh, 0DAh, 0E9h, 75h, 0FCh
F000:C4B8 BE DD DA E9 6F FC db 0BEh, 0DDh, 0DAh, 0E9h, 6Fh, 0FCh
F000:C4BE BE EE DA E9 69 FC db 0BEh, 0EEh, 0DAh, 0E9h, 69h, 0FCh
F000:C4C4 BE FF DA E9 63 FC db 0BEh, 0FFh, 0DAh, 0E9h, 63h, 0FCh
F000:C4CA BE 43 DB E9 5D FC db 0BEh, 43h, 0DBh, 0E9h, 5Dh, 0FCh
F000:C4D0 BE 32 DB E9 57 FC db 0BEh, 32h, 0DBh, 0E9h, 57h, 0FCh
F000:C4D6 BE 21 DB E9 51 FC db 0BEh, 21h, 0DBh, 0E9h, 51h, 0FCh
F000:C4DC BE 10 DB E9 4B FC db 0BEh, 10h, 0DBh, 0E9h, 4Bh, 0FCh
F000:C4E2 BE 6E DA E9 45 FC db 0BEh, 6Eh, 0DAh, 0E9h, 45h, 0FCh
F000:C4E8 BE 7F DA E9 3F FC db 0BEh, 7Fh, 0DAh, 0E9h, 3Fh, 0FCh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 203
F000:C4EE BA 12 00 BE 05 00 db 0BAh, 12h, 0, 0BEh, 5, 0
F000:C4F4 E8 70 00 E3 06 8B db 0E8h, 70h, 0, 0E3h, 6, 8Bh
F000:C4FA 76 06 89 52 1B 9C db 76h, 6, 89h, 52h, 1Bh, 9Ch
F000:C500 80 FC 4B 75 02 B4 db 80h, 0FCh, 4Bh, 75h, 2, 0B4h
F000:C506 48 db 48h
F000:C507 loc_978:
F000:C507 9D popf ; Pop flags
F000:C508 C3 retn
F000:C509 BA 18 00 BE 03 00 db 0BAh, 18h, 0, 0BEh, 3, 0
F000:C50F E8 55 00 E3 52 8B db 0E8h, 55h, 0, 0E3h, 52h, 8Bh
F000:C515 76 06 88 52 1D 80 db 76h, 6, 88h, 52h, 1Dh, 80h
F000:C51B FA 08 C6 42 20 00 db 0FAh, 8, 0C6h, 42h, 20h, 0
F000:C521 76 43 C6 42 20 08 db 76h, 43h, 0C6h, 42h, 20h, 8
F000:C527 C3 BA 1E 00 BE 05 db 0C3h, 0BAh, 1Eh, 0, 0BEh, 5
F000:C52D 00 E8 36 00 E3 33 db 0, 0E8h, 36h, 0, 0E3h, 33h
F000:C533 8B 76 06 89 52 1E db 8Bh, 76h, 6, 89h, 52h, 1Eh
F000:C539 C3 BA 24 00 BE 05 db 0C3h, 0BAh, 24h, 0, 0BEh, 5
F000:C53F 00 E8 24 00 E3 21 db 0, 0E8h, 24h, 0, 0E3h, 21h
F000:C545 8B 76 06 89 52 21 db 8Bh, 76h, 6, 89h, 52h, 21h
F000:C54B C3 BA 2A 00 BE 03 db 0C3h, 0BAh, 2Ah, 0, 0BEh, 3
F000:C551 00 E8 12 00 E3 06 db 0, 0E8h, 12h, 0, 0E3h, 6
F000:C557 8B 76 06 88 52 23 db 8Bh, 76h, 6, 88h, 52h, 23h
F000:C55D 9C 80 FC 4D 75 02 db 9Ch, 80h, 0FCh, 4Dh, 75h, 2
F000:C563 B4 db 0B4h
F000:C564 50 db 50h
F000:C565 loc_979:
F000:C565 9D popf ; Pop flags
F000:C566 C3 retn
F000:C567 03 56 04 8B CE 52 db 3, 56h, 4, 8Bh, 0CEh, 52h
F000:C56D 4A 41 41 51 52 B6 db 4Ah, 41h, 41h, 51h, 52h, 0B6h
F000:C573 07 BB 70 00 E8 28 db 7, 0BBh, 70h, 0, 0E8h, 28h
F000:C579 0F 5A 59 B3 F0 E8 db 0Fh, 5Ah, 59h, 0B3h, 0F0h, 0E8h
F000:C57F 21 0F B4 03 CD 10 db 21h, 0Fh, 0B4h, 3, 0CDh, 10h
F000:C585 5A 51 B4 01 80 E5 db 5Ah, 51h, 0B4h, 1, 80h, 0E5h
F000:C58B 9F CD 10 db 9Fh, 0CDh, 10h
F000:C58E loc_980: ; xref F000:C600, C60D, C619
F000:C58E 52 push dx
F000:C58F B4 02 mov ah,2
F000:C591 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C593 33 FF xor di,di ; Zero register
F000:C595 loc_981: ; xref F000:C5A0, C5AA, C5B1, C5E2
F000:C595 B4 00 mov ah,0
F000:C597 CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:C599 80 FC 0E cmp ah,0Eh
F000:C59C 75 15 jne short loc_983 ; Jump if not equal
F000:C59E 0B FF or di,di ; Zero ?
F000:C5A0 74 F3 jz loc_981 ; Jump if zero
F000:C5A2 4F dec di
F000:C5A3 B9 0001 mov cx,1
F000:C5A6 loc_982: ; xref F000:C5F8
F000:C5A6 B4 0E mov ah,0Eh
F000:C5A8 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C5AA E3 E9 jcxz loc_981 ; Jump if cx=0
F000:C5AC B8 0920 mov ax,920h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 204
F000:C5AF CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:C5B1 EB E2 jmp short loc_981 ; (C595)
F000:C5B3 loc_983: ; xref F000:C59C
F000:C5B3 80 FC 4D cmp ah,4Dh ; 'M'
F000:C5B6 74 4F je short loc_988 ; Jump if equal
F000:C5B8 80 FC 50 cmp ah,50h ; 'P'
F000:C5BB 74 4A je short loc_988 ; Jump if equal
F000:C5BD 80 FC 4B cmp ah,4Bh ; 'K'
F000:C5C0 74 38 je short loc_986 ; Jump if equal
F000:C5C2 80 FC 48 cmp ah,48h ; 'H'
F000:C5C5 74 33 je short loc_986 ; Jump if equal
F000:C5C7 80 FC 49 cmp ah,49h ; 'I'
F000:C5CA 74 47 je short loc_990 ; Jump if equal
F000:C5CC 80 FC 51 cmp ah,51h ; 'Q'
F000:C5CF 74 42 je short loc_990 ; Jump if equal
F000:C5D1 80 FC 01 cmp ah,1
F000:C5D4 74 3D je short loc_990 ; Jump if equal
F000:C5D6 80 FC 1C cmp ah,1Ch
F000:C5D9 75 09 jne short loc_985 ; Jump if not equal
F000:C5DB B4 4D mov ah,4Dh ; 'M'
F000:C5DD EB 28 jmp short loc_988 ; (C607)
F000:C5DF loc_984: ; xref F000:C5E6, C5EA, C5EE
F000:C5DF E8 01D3 call sub_197 ; (C7B5)
F000:C5E2 EB B1 jmp short loc_981 ; (C595)
F000:C5E4 loc_985: ; xref F000:C5D9
F000:C5E4 3C 30 cmp al,30h ; '0'
F000:C5E6 72 F7 jb loc_984 ; Jump if below
F000:C5E8 3C 39 cmp al,39h ; '9'
F000:C5EA 77 F3 ja loc_984 ; Jump if above
F000:C5EC 3B F7 cmp si,di
F000:C5EE 74 EF je loc_984 ; Jump if equal
F000:C5F0 88 43 0A mov [bp+di+0Ah],al
F000:C5F3 47 inc di
F000:C5F4 8B CE mov cx,si
F000:C5F6 2B CF sub cx,di
F000:C5F8 EB AC jmp short loc_982 ; (C5A6)
F000:C5FA loc_986: ; xref F000:C5C0, C5C5
F000:C5FA E8 002F call sub_178 ; (C62C)
F000:C5FD E3 03 jcxz short loc_987 ; Jump if cx=0
F000:C5FF 5A pop dx
F000:C600 EB 8C jmp short loc_980 ; (C58E)
F000:C602 loc_987: ; xref F000:C5FD
F000:C602 3B E4 cmp sp,sp
F000:C604 F9 stc ; Set carry flag
F000:C605 EB 18 jmp short loc_992 ; (C61F)
F000:C607 loc_988: ; xref F000:C5B6, C5BB, C5DD
F000:C607 E8 0022 call sub_178 ; (C62C)
F000:C60A E3 04 jcxz short loc_989 ; Jump if cx=0
F000:C60C 5A pop dx
F000:C60D E9 FF7E jmp loc_980 ; (C58E)
F000:C610 loc_989: ; xref F000:C60A
F000:C610 F8 clc ; Clear carry flag
F000:C611 EB 0C jmp short loc_992 ; (C61F)
F000:C613 loc_990: ; xref F000:C5CA, C5CF, C5D4
F000:C613 E8 0016 call sub_178 ; (C62C)
F000:C616 E3 04 jcxz short loc_991 ; Jump if cx=0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 205
F000:C618 5A pop dx
F000:C619 E9 FF72 jmp loc_980 ; (C58E)
F000:C61C loc_991: ; xref F000:C616
F000:C61C 0B E4 or sp,sp ; Zero ?
F000:C61E F9 stc ; Set carry flag
F000:C61F loc_992: ; xref F000:C605, C611
F000:C61F 59 pop cx
F000:C620 59 pop cx
F000:C621 50 push ax
F000:C622 9C pushf ; Push flags
F000:C623 B4 01 mov ah,1
F000:C625 CD 10 int 10h ; Video display ah=functn 01h
; set cursor mode in cx
F000:C627 9D popf ; Pop flags
F000:C628 58 pop ax
F000:C629 8B CF mov cx,di
F000:C62B C3 retn
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:C5FA, C607, C613
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_178 proc near
F000:C62C 50 push ax
F000:C62D 56 push si
F000:C62E 8B CF mov cx,di
F000:C630 E3 2D jcxz short loc_995 ; Jump if cx=0
F000:C632 33 F6 xor si,si ; Zero register
F000:C634 33 C0 xor ax,ax ; Zero register
F000:C636 locloop_993: ; xref F000:C64A
F000:C636 BA 000A mov dx,0Ah
F000:C639 F7 E2 mul dx ; dx:ax = reg * ax
F000:C63B 70 1D jo short loc_994 ; Jump if overflow=1
F000:C63D 8A 52 0A mov dl,[bp+si+0Ah]
F000:C640 46 inc si
F000:C641 80 EA 30 sub dl,30h ; '0'
F000:C644 B6 00 mov dh,0
F000:C646 03 C2 add ax,dx
F000:C648 72 10 jc short loc_994 ; Jump if carry Set
F000:C64A E2 EA loop locloop_993 ; Loop if cx > 0
F000:C64C 8B D0 mov dx,ax
F000:C64E 5E pop si
F000:C64F 56 push si
F000:C650 83 FE 05 cmp si,5
F000:C653 74 0A je short loc_995 ; Jump if equal
F000:C655 3D 00FF cmp ax,0FFh
F000:C658 76 05 jbe short loc_995 ; Jump if below or =
F000:C65A loc_994: ; xref F000:C63B, C648
F000:C65A E8 0158 call sub_197 ; (C7B5)
F000:C65D 8B CF mov cx,di
F000:C65F loc_995: ; xref F000:C630, C653, C658
F000:C65F 5E pop si
F000:C660 58 pop ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 206
F000:C661 C3 retn
sub_178 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:C2E2, C3EA, C418, C48A
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_179 proc near
F000:C662 53 push bx
F000:C663 BB 0070 mov bx,70h
F000:C666 52 push dx
F000:C667 EB 19 jmp short loc_997 ; (C682)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
sub_180:
F000:C669 53 push bx
F000:C66A BB 0070 mov bx,70h
F000:C66D EB 0B jmp short loc_996 ; (C67A)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:BEA3, BF60, BF72, BF87, BF99, BFE2, C2D0
; C2FA, C426, C444, C77A, D167, D170, D179
; D186, D190, D19D
sub_181:
F000:C66F 53 push bx
F000:C670 BB 0007 mov bx,7
F000:C673 52 push dx
F000:C674 EB 0C jmp short loc_997 ; (C682)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:BD4D, BD53, BD59, BDC8
sub_182:
F000:C676 53 push bx
F000:C677 BB 0007 mov bx,7
F000:C67A loc_996: ; xref F000:C66D
F000:C67A 52 push dx
F000:C67B 2E: 8B 14 mov dx,cs:[si]
F000:C67E 86 D6 xchg dl,dh
F000:C680 46 inc si
F000:C681 46 inc si
F000:C682 loc_997: ; xref F000:C667, C674
F000:C682 51 push cx
F000:C683 50 push ax
F000:C684 loc_998: ; xref F000:C696, C69E, C6A6, C6B1
F000:C684 B4 02 mov ah,2
F000:C686 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C688 2E: 8A 04 mov al,cs:[si]
F000:C68B 46 inc si
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 207
F000:C68C 0A C0 or al,al ; Zero ?
F000:C68E 74 23 jz short loc_1002 ; Jump if zero
F000:C690 3C 0D cmp al,0Dh
F000:C692 75 04 jne short loc_999 ; Jump if not equal
F000:C694 B2 01 mov dl,1
F000:C696 EB EC jmp short loc_998 ; (C684)
F000:C698 loc_999: ; xref F000:C692
F000:C698 3C 0A cmp al,0Ah
F000:C69A 75 04 jne short loc_1000 ; Jump if not equal
F000:C69C FE C6 inc dh
F000:C69E EB E4 jmp short loc_998 ; (C684)
F000:C6A0 loc_1000: ; xref F000:C69A
F000:C6A0 3C 08 cmp al,8
F000:C6A2 75 04 jne short loc_1001 ; Jump if not equal
F000:C6A4 FE CA dec dl
F000:C6A6 EB DC jmp short loc_998 ; (C684)
F000:C6A8 loc_1001: ; xref F000:C6A2
F000:C6A8 B4 09 mov ah,9
F000:C6AA B9 0001 mov cx,1
F000:C6AD CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:C6AF FE C2 inc dl
F000:C6B1 EB D1 jmp short loc_998 ; (C684)
F000:C6B3 loc_1002: ; xref F000:C68E
F000:C6B3 58 pop ax
F000:C6B4 59 pop cx
F000:C6B5 5A pop dx
F000:C6B6 5B pop bx
F000:C6B7 C3 retn
sub_179 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:C2EB, C344, D498
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_183 proc near
F000:C6B8 53 push bx
F000:C6B9 51 push cx
F000:C6BA BB 4951 mov bx,4951h
F000:C6BD B9 0101 mov cx,101h
F000:C6C0 EB 08 jmp short loc_1003 ; (C6CA)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
sub_184:
F000:C6C2 53 push bx
F000:C6C3 51 push cx
F000:C6C4 BB 1C1C mov bx,1C1Ch
F000:C6C7 B9 1C1C mov cx,1C1Ch
F000:C6CA loc_1003: ; xref F000:C6C0, C6F5
F000:C6CA B4 00 mov ah,0
F000:C6CC CD 16 int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
F000:C6CE 80 FC 4D cmp ah,4Dh ; 'M'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 208
F000:C6D1 74 2B je short loc_1006 ; Jump if equal
F000:C6D3 80 FC 50 cmp ah,50h ; 'P'
F000:C6D6 74 26 je short loc_1006 ; Jump if equal
F000:C6D8 80 FC 4B cmp ah,4Bh ; 'K'
F000:C6DB 74 20 je short loc_1005 ; Jump if equal
F000:C6DD 80 FC 48 cmp ah,48h ; 'H'
F000:C6E0 74 1B je short loc_1005 ; Jump if equal
F000:C6E2 3A E7 cmp ah,bh
F000:C6E4 74 15 je short loc_1004 ; Jump if equal
F000:C6E6 3A E3 cmp ah,bl
F000:C6E8 74 11 je short loc_1004 ; Jump if equal
F000:C6EA 3A E5 cmp ah,ch
F000:C6EC 74 0D je short loc_1004 ; Jump if equal
F000:C6EE 3A E1 cmp ah,cl
F000:C6F0 74 09 je short loc_1004 ; Jump if equal
F000:C6F2 80 FC 1C cmp ah,1Ch
F000:C6F5 75 D3 jne loc_1003 ; Jump if not equal
F000:C6F7 B4 4D mov ah,4Dh ; 'M'
F000:C6F9 EB 03 jmp short loc_1006 ; (C6FE)
F000:C6FB loc_1004: ; xref F000:C6E4, C6E8, C6EC, C6F0
F000:C6FB 0B E4 or sp,sp ; Zero ?
F000:C6FD loc_1005: ; xref F000:C6DB, C6E0
F000:C6FD F9 stc ; Set carry flag
F000:C6FE loc_1006: ; xref F000:C6D1, C6D6, C6F9
F000:C6FE 59 pop cx
F000:C6FF 5B pop bx
F000:C700 C3 retn
sub_183 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:C790
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_185 proc near
F000:C701 B8 0E4B mov ax,0E4Bh
F000:C704 EB 03 jmp short loc_1007 ; (C709)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:C3D1
sub_186:
F000:C706 B8 0E4D mov ax,0E4Dh
F000:C709 loc_1007: ; xref F000:C704
F000:C709 50 push ax
F000:C70A B8 0E20 mov ax,0E20h
F000:C70D CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C70F 58 pop ax
F000:C710 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C712 B8 0E42 mov ax,0E42h
F000:C715 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 209
F000:C717 C3 retn
sub_185 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:C354
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_187 proc near
F000:C718 B4 00 mov ah,0
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:C30A, C3DC, C78D
sub_188:
F000:C71A B9 000A mov cx,0Ah
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:C726
sub_189:
F000:C71D 33 D2 xor dx,dx ; Zero register
F000:C71F F7 F1 div cx ; ax,dx rem=dx:ax/reg
F000:C721 0B C0 or ax,ax ; Zero ?
F000:C723 74 05 jz short loc_1008 ; Jump if zero
F000:C725 52 push dx
F000:C726 E8 FFF4 call sub_189 ; (C71D)
F000:C729 5A pop dx
F000:C72A loc_1008: ; xref F000:C723
F000:C72A 8B C2 mov ax,dx
F000:C72C 0D 0E30 or ax,0E30h
F000:C72F CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C731 C3 retn
sub_187 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BDCD, BDD2
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_190 proc near
F000:C732 B6 01 mov dh,1
F000:C734 loc_1009: ; xref F000:C742
F000:C734 B4 02 mov ah,2
F000:C736 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C738 B8 0EBA mov ax,0EBAh
F000:C73B CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C73D FE C6 inc dh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 210
F000:C73F 80 FE 18 cmp dh,18h
F000:C742 75 F0 jne loc_1009 ; Jump if not equal
F000:C744 C3 retn
sub_190 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BDD7, BDE9, BDF3
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_191 proc near
F000:C745 B2 00 mov dl,0
F000:C747 B4 02 mov ah,2
F000:C749 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C74B B8 09CD mov ax,9CDh
F000:C74E B9 004F mov cx,4Fh
F000:C751 CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:C753 C3 retn
sub_191 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BE2B, BE30
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_192 proc near
F000:C754 B2 00 mov dl,0
F000:C756 B0 C7 mov al,0C7h
F000:C758 E8 003A call sub_195 ; (C795)
F000:C75B B8 09C4 mov ax,9C4h
F000:C75E B9 0031 mov cx,31h
F000:C761 CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:C763 B2 32 mov dl,32h ; '2'
F000:C765 B0 D7 mov al,0D7h
F000:C767 E8 002B call sub_195 ; (C795)
F000:C76A C3 retn
sub_192 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BF75
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_193 proc near
F000:C76B F6 46 38 20 test byte ptr [bp+38h],20h ; ' '
F000:C76F BE DA9C mov si,0DA9Ch
F000:C772 74 03 jz short loc_1010 ; Jump if zero
F000:C774 BE DA90 mov si,0DA90h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 211
F000:C777 loc_1010: ; xref F000:C772
F000:C777 BA 0C16 mov dx,0C16h
F000:C77A E8 FEF2 call sub_181 ; (C66F)
F000:C77D C3 retn
sub_193 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BE5B, BE68
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_194 proc near
F000:C77E 51 push cx
F000:C77F 50 push ax
F000:C780 B4 02 mov ah,2
F000:C782 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C784 B9 000C mov cx,0Ch
F000:C787 B8 0920 mov ax,920h
F000:C78A CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:C78C 58 pop ax
F000:C78D E8 FF8A call sub_188 ; (C71A)
F000:C790 E8 FF6E call sub_185 ; (C701)
F000:C793 59 pop cx
F000:C794 C3 retn
sub_194 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BDE4, BE00, BE08, BE10, BE18, C758, C767
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_195 proc near
F000:C795 50 push ax
F000:C796 B4 02 mov ah,2
F000:C798 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:C79A 58 pop ax
F000:C79B B4 0E mov ah,0Eh
F000:C79D CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:C79F C3 retn
sub_195 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:92DF, 9800
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_196 proc near
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 212
F000:C7A0 33 F6 xor si,si ; Zero register
F000:C7A2 2E: AD lods word ptr cs:[si] ; String [si] to ax
F000:C7A4 3D 55AA cmp ax,55AAh
F000:C7A7 75 0B jne short loc_ret_1012 ; Jump if not equal
F000:C7A9 B9 37FF mov cx,37FFh
F000:C7AC 8B F8 mov di,ax
F000:C7AE locloop_1011: ; xref F000:C7B2
F000:C7AE 2E: AD lods word ptr cs:[si] ; String [si] to ax
F000:C7B0 33 F8 xor di,ax
F000:C7B2 E2 FA loop locloop_1011 ; Loop if cx > 0
F000:C7B4 loc_ret_1012: ; xref F000:C7A7
F000:C7B4 C3 retn
sub_196 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:C5DF, C65A
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_197 proc near
F000:C7B5 53 push bx
F000:C7B6 BB 00D0 mov bx,0D0h
F000:C7B9 B9 0030 mov cx,30h
F000:C7BC E4 61 in al,61h ; port 61h, 8255 port B, read
F000:C7BE 8A E0 mov ah,al
F000:C7C0 24 FE and al,0FEh
F000:C7C2 locloop_1013: ; xref F000:C7D4
F000:C7C2 51 push cx
F000:C7C3 0C 02 or al,2
F000:C7C5 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:C7C7 8B CB mov cx,bx
F000:C7C9 locloop_1014: ; xref F000:C7C9
F000:C7C9 E2 FE loop locloop_1014 ; Loop if cx > 0
F000:C7CB 24 FD and al,0FDh
F000:C7CD E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:C7CF 8B CB mov cx,bx
F000:C7D1 locloop_1015: ; xref F000:C7D1
F000:C7D1 E2 FE loop locloop_1015 ; Loop if cx > 0
F000:C7D3 59 pop cx
F000:C7D4 E2 EC loop locloop_1013 ; Loop if cx > 0
F000:C7D6 8A C4 mov al,ah
F000:C7D8 E6 61 out 61h,al ; port 61h, 8255 B - spkr, etc
F000:C7DA 5B pop bx
F000:C7DB C3 retn
sub_197 endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 213
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BE9D, BF5A, C441
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_198 proc near
F000:C7DC 50 push ax
F000:C7DD 32 E4 xor ah,ah ; Zero register
F000:C7DF D1 E0 shl ax,1 ; Shift w/zeros fill
F000:C7E1 03 F0 add si,ax
F000:C7E3 2E: 8B 34 mov si,cs:[si]
F000:C7E6 58 pop ax
F000:C7E7 C3 retn
sub_198 endp
F000:C7E8 7F DA A8 DA 6E DA db 7Fh, 0DAh, 0A8h, 0DAh, 6Eh, 0DAh
F000:C7EE B0 DA 43 DB 32 DB db 0B0h, 0DAh, 43h, 0DBh, 32h, 0DBh
F000:C7F4 21 DB 10 DB 7F DA db 21h, 0DBh, 10h, 0DBh, 7Fh, 0DAh
F000:C7FA F0 C8 E8 C8 F8 C8 db 0F0h, 0C8h, 0E8h, 0C8h, 0F8h, 0C8h
F000:C800 E0 C8 00 C9 7F DA db 0E0h, 0C8h, 0, 0C9h, 7Fh, 0DAh
F000:C806 CC DA DD DA EE DA db 0CCh, 0DAh, 0DDh, 0DAh, 0EEh, 0DAh
F000:C80C FF DA D8 C8 B8 C8 db 0FFh, 0DAh, 0D8h, 0C8h, 0B8h, 0C8h
F000:C812 C0 C8 C8 C8 D0 C8 db 0C0h, 0C8h, 0C8h, 0C8h, 0D0h, 0C8h
F000:C818 28 C8 8B C0 20 C8 db 28h, 0C8h, 8Bh, 0C0h, 20h, 0C8h
F000:C81E 90 C0 18 C8 95 C0 db 90h, 0C0h, 18h, 0C8h, 95h, 0C0h
F000:C824 28 C8 8B C0 20 C8 db 28h, 0C8h, 8Bh, 0C0h, 20h, 0C8h
F000:C82A 90 C0 18 C8 95 C0 db 90h, 0C0h, 18h, 0C8h, 95h, 0C0h
F000:C830 38 C8 90 C0 38 C8 db 38h, 0C8h, 90h, 0C0h, 38h, 0C8h
F000:C836 90 C0 30 C8 95 C0 db 90h, 0C0h, 30h, 0C8h, 95h, 0C0h
F000:C83C 30 C8 95 C0 B0 C8 db 30h, 0C8h, 95h, 0C0h, 0B0h, 0C8h
F000:C842 88 C1 48 C8 E2 D2 db 88h, 0C1h, 48h, 0C8h, 0E2h, 0D2h
F000:C848 40 C8 8C D2 50 C8 db 40h, 0C8h, 8Ch, 0D2h, 50h, 0C8h
F000:C84E 38 D3 48 C8 E2 D2 db 38h, 0D3h, 48h, 0C8h, 0E2h, 0D2h
F000:C854 58 C8 9E D3 50 C8 db 58h, 0C8h, 9Eh, 0D3h, 50h, 0C8h
F000:C85A 38 D3 60 C8 FC D3 db 38h, 0D3h, 60h, 0C8h, 0FCh, 0D3h
F000:C860 58 C8 9E D3 68 C8 db 58h, 0C8h, 9Eh, 0D3h, 68h, 0C8h
F000:C866 5A D4 60 C8 FC D3 db 5Ah, 0D4h, 60h, 0C8h, 0FCh, 0D3h
F000:C86C 70 C8 96 C1 68 C8 db 70h, 0C8h, 96h, 0C1h, 68h, 0C8h
F000:C872 5A D4 78 C8 AC C1 db 5Ah, 0D4h, 78h, 0C8h, 0ACh, 0C1h
F000:C878 70 C8 96 C1 80 C8 db 70h, 0C8h, 96h, 0C1h, 80h, 0C8h
F000:C87E D4 C1 78 C8 AC C1 db 0D4h, 0C1h, 78h, 0C8h, 0ACh, 0C1h
F000:C884 88 C8 0C C2 80 C8 db 88h, 0C8h, 0Ch, 0C2h, 80h, 0C8h
F000:C88A D4 C1 90 C8 A9 C0 db 0D4h, 0C1h, 90h, 0C8h, 0A9h, 0C0h
F000:C890 88 C8 0C C2 98 C8 db 88h, 0C8h, 0Ch, 0C2h, 98h, 0C8h
F000:C896 E2 C0 90 C8 A9 C0 db 0E2h, 0C0h, 90h, 0C8h, 0A9h, 0C0h
F000:C89C A0 C8 6F C1 98 C8 db 0A0h, 0C8h, 6Fh, 0C1h, 98h, 0C8h
F000:C8A2 E2 C0 A8 C8 4E C1 db 0E2h, 0C0h, 0A8h, 0C8h, 4Eh, 0C1h
F000:C8A8 A0 C8 6F C1 B0 C8 db 0A0h, 0C8h, 6Fh, 0C1h, 0B0h, 0C8h
F000:C8AE 88 C1 A8 C8 4E C1 db 88h, 0C1h, 0A8h, 0C8h, 4Eh, 0C1h
F000:C8B4 40 C8 8C D2 D8 C8 db 40h, 0C8h, 8Ch, 0D2h, 0D8h, 0C8h
F000:C8BA C4 C4 C0 C8 B2 C4 db 0C4h, 0C4h, 0C0h, 0C8h, 0B2h, 0C4h
F000:C8C0 B8 C8 E8 C4 C8 C8 db 0B8h, 0C8h, 0E8h, 0C4h, 0C8h, 0C8h
F000:C8C6 B8 C4 C0 C8 B2 C4 db 0B8h, 0C4h, 0C0h, 0C8h, 0B2h, 0C4h
F000:C8CC D0 C8 BE C4 C8 C8 db 0D0h, 0C8h, 0BEh, 0C4h, 0C8h, 0C8h
F000:C8D2 B8 C4 D8 C8 C4 C4 db 0B8h, 0C4h, 0D8h, 0C8h, 0C4h, 0C4h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 214
F000:C8D8 D0 C8 BE C4 B8 C8 db 0D0h, 0C8h, 0BEh, 0C4h, 0B8h, 0C8h
F000:C8DE E8 C4 00 C9 D6 C4 db 0E8h, 0C4h, 0, 0C9h, 0D6h, 0C4h
F000:C8E4 E8 C8 DC C4 E0 C8 db 0E8h, 0C8h, 0DCh, 0C4h, 0E0h, 0C8h
F000:C8EA E8 C4 F0 C8 D0 C4 db 0E8h, 0C4h, 0F0h, 0C8h, 0D0h, 0C4h
F000:C8F0 E8 C8 DC C4 F8 C8 db 0E8h, 0C8h, 0DCh, 0C4h, 0F8h, 0C8h
F000:C8F6 CA C4 F0 C8 D0 C4 db 0CAh, 0C4h, 0F0h, 0C8h, 0D0h, 0C4h
F000:C8FC 00 C9 D6 C4 F8 C8 db 0, 0C9h, 0D6h, 0C4h, 0F8h, 0C8h
F000:C902 CA C4 E0 C8 E8 C4 db 0CAh, 0C4h, 0E0h, 0C8h, 0E8h, 0C4h
F000:C908 10 C9 E2 C4 10 C9 db 10h, 0C9h, 0E2h, 0C4h, 10h, 0C9h
F000:C90E E2 C4 08 C9 E8 C4 db 0E2h, 0C4h, 8, 0C9h, 0E8h, 0C4h
F000:C914 08 C9 E8 C4 38 C9 db 8, 0C9h, 0E8h, 0C4h, 38h, 0C9h
F000:C91A 4C C5 20 C9 09 C5 db 4Ch, 0C5h, 20h, 0C9h, 9, 0C5h
F000:C920 18 C9 EE C4 28 C9 db 18h, 0C9h, 0EEh, 0C4h, 28h, 0C9h
F000:C926 28 C5 20 C9 09 C5 db 28h, 0C5h, 20h, 0C9h, 9, 0C5h
F000:C92C 30 C9 3A C5 28 C9 db 30h, 0C9h, 3Ah, 0C5h, 28h, 0C9h
F000:C932 28 C5 38 C9 4C C5 db 28h, 0C5h, 38h, 0C9h, 4Ch, 0C5h
F000:C938 30 C9 3A C5 18 C9 db 30h, 0C9h, 3Ah, 0C5h, 18h, 0C9h
F000:C93E EE C4 BD C9 BD C9 db 0EEh, 0C4h, 0BDh, 0C9h, 0BDh, 0C9h
F000:C944 BD C9 0C CA 32 CA db 0BDh, 0C9h, 0Ch, 0CAh, 32h, 0CAh
F000:C94A BD C9 C4 C9 B3 CA db 0BDh, 0C9h, 0C4h, 0C9h, 0B3h, 0CAh
F000:C950 A5 C9 63 CA 9A C9 db 0A5h, 0C9h, 63h, 0CAh, 9Ah, 0C9h
F000:C956 9A C9 9A C9 9A C9 db 9Ah, 0C9h, 9Ah, 0C9h, 9Ah, 0C9h
F000:C95C 9A C9 9A C9 BD C9 db 9Ah, 0C9h, 9Ah, 0C9h, 0BDh, 0C9h
F000:C962 A1 C9 db 0A1h, 0C9h
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 15h ▒▒▒▒▒
;
; GENERAL SERVICES
;
; On old PCs this function is only used for cassette servicing.
; Additional functions have been added for advanced features with
; newer equipment.
;
; Called with: ah = function code
;
; Returns: CF = 0 if successful
; CF = 1 if failure or function not supported
;
; Functions:
; ah = 0 Cassette motor set on
; ah = 1 Cassette motor set off
; ah = 2 Read cx bytes from cassette, es:bx = ptr to load area
; ah = 3 Write cx bytes to cassette, es:bx = ptr to read area
; ah = 0Fh Disk format hook, called from disk format routines
; after a cylinder access completed. Called with:
; al = 1-undergoing surface analysis, 2-if formating
; ah = 21h Error log (PS 2), al = 0 to read, al = 1 to write
;
; *** LAP TOP MACHINES ONLY - 40h to 44h ***
; ah = 40h Systems info in cx, bx - al = 0 to read, 1 to write
; for modem info in bx - al = 2 to read, 3 to write
; ah = 41h Wait for an event, dx = i/o port to read or use es:di
; as ptr to user event. al = type of event 0-4,11-14
; bh = event mask, bl = # of 55ms counts to timeout
; ah = 42h Power off, al = 0 or 1 for mode of power off
; ah = 43h Get system status in al
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 215
; 7 6 5 4 3 2 1 0
; low extrn bad pwr up modem ports LCD
; battery pwr time alarm on on missing
; ah = 44h Modem power, al = 0 turn off, al = 1 turn on
;
; *** FUNCTIONS IN RECENT BIOS VERSIONS ONLY ***
; ah = 4Fh Keyboard input hook, called every keystroke with
; al = scan code. CF = 1 to change or use the scan
; code in al. CF = 0 to ignore the key.
; ah = 80h Open device number bx, in process number cx.
; ah = 81h Close device number bx, in process number cx.
; ah = 82h Terminate device number bx
; ah = 83h Wait for timeout, and set bit 15 at ptr es:bx when
; timed out. al = 0 to set wait period cx:dx uSec,
; al = 1 to stop timeout timer.
; ah = 84h Game port read, dx = 0 to read switches into al
; high nibble, dx = 1 to read linear position
; (Unit 1: ax = x, bx = y Unit 2: cx = x, dx = y)
; ah = 85h Get system request key state, al = 0 down, al = 1 up
; ah = 86h Wait cx:dx microseconds before return
; ah = 87h Transfer cx words to/from memory above 1 meg
; es:si ptr to table with source & destination ptrs:
; es:si -> zeros db 16dup(0)
; src_seg_limit dw ? ; 1-64K bytes
; scr_ptr_low dw ? ; 0-64K range
; scr_ptr_high db ? ; 0-16 Meg range
; scr_rights db 93h ; r/w access
; scr_zero dw 0
; dst_seg_limit dw ? ; 1-64K bytes
; dst_ptr_low dw ? ; 0-64K range
; dst_ptr_high db ? ; 0-16 Meg range
; dst_rights db 93h ; r/w access
; dst_zero dw 0
; zeros2 db 16dup(0)
; Notes:
; cx = 32K words max xfer, ptr_low & ptr_high form
; a 24 bit physical address (do not use a segment)
; Return codes: al = 0 if ok, al = 1 parity error
; al = 2 other errors, al = 3 gate addr line 20 bad
; ah = 88h Get extended memory size (above 1 Meg boundary)
; ax = (number of bytes / 1024)
; ah = 89h Go to protected mode of operation. es:si ptr to table
; comprised of 8 groups of 8 byte ptr sub-arrays. Each.
; group is formed from 8 bytes as follows:
; seg_limit dw ? ; 1-64K bytes
; ptr_low dw ? ; 0-64K range
; ptr_high db ? ; 0-16 Meg range
; rights db 93h ; read/write access
; zero dw 0 ; set to zero
; Ptr_low & high form a 24 bit physical address.
;
; The 8 groups are as follows:
; es:si -> Group_1 Set to all zero
; Group_2 ptr to beginning of Group_1
; Group_3 ptr to Interrupt Descript Table IDT
; Group_4 ptr to present DS segment
; Group_5 ptr to present ES segment
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 216
; Group_6 ptr to present SS segment
; Group_7 ptr to present CS segment
; Group_8 ptr where to jump to when done
; Also: bh & bl set as offset from beginning of IDT to
; spot where 1st & 2nd set of 8 hardware interrupts begin.
; Returns ah = 0 if ok, regs changed: ax,bp,ds,es,ss,cs
; ah = 90h Device busy - used to signal DOS when it must wait.
; Type 0 Disk timeout 0FCh Hard disk timeout
; codes 1 Floppy timeout (PS 2 only)
; (al) 2 Keyboard no timeout 0FDh Floppy motor timeout
; 3 Mouse timeout 0FEh Printer timeout
; 80h Local area network (es:bx = network cntrl block
; Returns CF = 0 if failure, 1 if minimum wait time occurred
; ah = 91h Interrupt done - used to signal DOS when hardware done
; al = type code (Device busy type codes)
; ah = C0h Get ROM system information table ptr in es:bx. See data
; area starting at byte "sys_info_size".
;
; *** PS 2 & COMPATIBLES ONLY - C1h to C4h ***
; ah = C1h Get Extended BIOS data area segment in es
; ah = C2h Mouse support (BIOS). Sub-function code in al
; al = 0 if bh = 0 mouse off, bh = 1 mouse on
; al = 1 reset mouse & parameters, returns bh = 0
; bl altered on return
; al = 2 Set number of updates per second in bh,
; bh = 0 - 10 updates/sec 4 - 80 updates/sec
; 1 - 20 updates/sec 5 - 100 updates/sec
; 2 - 40 updates/sec 6 - 200 updates/sec
; 3 - 60 updates/sec
; al = 3 Set resolution in counts per millimeter:
; bh = 0 - 1 cnts per mm 2 - 4 cnts per mm
; 1 - 2 cnts per mm 3 - 8 cnts per mm
; al = 4 Get device type, bh = 0
; al = 5 Initialize pointing device interface data size
; bh = size 1 to 8 (1 to 8 bytes)
; al = 6 Additional sub-functions in bh:
; bh = 0 Get status, cl = cnts per mm (see al=3)
; dl = updates/sec in hex, bl = status:
; bit 6 = mode (0=stream, 1=remote)
; 5 = 0 disabled, 1 enabled
; 4 = scaling (0=1:1, 1=2:1)
; 2 = Left button pressed
; 0 = right button pressed
; bh = 1 Set scaling to 1:1
; bh = 2 Set scaling to 2:1
; al = 7 Set location to "call far" when data available
; in es:bx
; Return code for all sub-functions in al:
; al = 0 successful 3 interface error
; 1 bad function call 4 resend
; 2 invalid input 5 no far call installed
; ah = C3h Watchdog timer mode al = 0 disable, al = 1 enable,
; bx = set counter value 1 to FFh
; ah = C4h Bus option select (POS) subfunction in al,
; al = 0 Get base POS adapter register address in dx
; 1 Enable setup for slot bl
; 2 Adapter enable
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 217
F000:C964 int_15h_servics proc near ; xref F000:F859
F000:C964 80 FC 87 cmp ah,87h
F000:C967 75 04 jne short loc_1016 ; Jump if not equal
F000:C969 50 push ax
F000:C96A E9 0146 jmp loc_1027 ; (CAB3)
F000:C96D loc_1016: ; xref F000:C967
F000:C96D FB sti ; Enable interrupts
F000:C96E 50 push ax
F000:C96F 8A C4 mov al,ah
F000:C971 2C 80 sub al,80h
F000:C973 78 25 js short loc_1018 ; Jump if sign=1
F000:C975 3C 12 cmp al,12h
F000:C977 73 3B jae short loc_1019 ; Jump if above or =
F000:C979 32 E4 xor ah,ah ; Zero register
F000:C97B D1 E0 shl ax,1 ; Shift w/zeros fill
F000:C97D 05 C940 add ax,0C940h
F000:C980 55 push bp
F000:C981 8B E8 mov bp,ax
F000:C983 2E: 8B 46 00 mov ax,cs:[bp]
F000:C987 5D pop bp
F000:C988 FF E0 jmp ax ;*Register jump
F000:C98A loc_1017: ; xref F000:C9B6
F000:C98A 2E: F6 06 E2C0 40 test byte ptr cs:data_158,40h ; (F000:E2C0=0BFh) '@'
F000:C990 74 08 jz short loc_1018 ; Jump if zero
F000:C992 3C 42 cmp al,42h ; 'B'
F000:C994 75 04 jne short loc_1018 ; Jump if not equal
F000:C996 58 pop ax
F000:C997 E9 AD8C jmp $-5271h
F000:C99A loc_1018: ; xref F000:C973, C990, C994
F000:C99A 58 pop ax
F000:C99B B4 86 mov ah,86h
F000:C99D F9 stc ; Set carry flag
F000:C99E CA 0002 retf 2 ; Return far
int_15h_servics endp
F000:C9A1 58 B4 00 CF 58 B0 db 58h, 0B4h, 0, 0CFh, 58h, 0B0h
F000:C9A7 31 FA E8 F3 24 8A db 31h, 0FAh, 0E8h, 0F3h, 24h, 8Ah
F000:C9AD E0 B0 30 E8 EC 24 db 0E0h, 0B0h, 30h, 0E8h, 0ECh, 24h
F000:C9B3 CF db 0CFh
F000:C9B4 loc_1019: ; xref F000:C977
F000:C9B4 3C 40 cmp al,40h ; '@'
F000:C9B6 75 D2 jne loc_1017 ; Jump if not equal
F000:C9B8 BB E6F5 mov bx,0E6F5h
F000:C9BB 0E push cs
F000:C9BC 07 pop es
F000:C9BD F8 clc ; Clear carry flag
F000:C9BE loc_1020: ; xref F000:CA0A
F000:C9BE 58 pop ax
F000:C9BF B4 00 mov ah,0
F000:C9C1 CA 0002 retf 2 ; Return far
F000:C9C4 53 06 6A 40 07 BB db 53h, 6, 6Ah, 40h, 7, 0BBh
F000:C9CA A0 00 E8 1B 02 72 db 0A0h, 0, 0E8h, 1Bh, 2, 72h
F000:C9D0 37 51 52 1E 53 06 db 37h, 51h, 52h, 1Eh, 53h, 6
F000:C9D6 1F BB 04 00 E8 3F db 1Fh, 0BBh, 4, 0, 0E8h, 3Fh
F000:C9DC 02 51 52 B3 04 E8 db 2, 51h, 52h, 0B3h, 4, 0E8h
F000:C9E2 38 02 51 52 B3 03 db 38h, 2, 51h, 52h, 0B3h, 3
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 218
F000:C9E8 E8 31 02 58 03 D0 db 0E8h, 31h, 2, 58h, 3, 0D0h
F000:C9EE 58 13 C8 58 03 D0 db 58h, 13h, 0C8h, 58h, 3, 0D0h
F000:C9F4 58 13 C8 5B 87 CA db 58h, 13h, 0C8h, 5Bh, 87h, 0CAh
F000:C9FA loc_1021: ; xref F000:CA00
F000:C9FA E8 25A5 call sub_262 ; (EFA2)
F000:C9FD 73 03 jnc short loc_1022 ; Jump if carry=0
F000:C9FF 4A dec dx
F000:CA00 79 F8 jns loc_1021 ; Jump if not sign
F000:CA02 loc_1022: ; xref F000:C9FD
F000:CA02 C6 07 00 mov byte ptr [bx],0
F000:CA05 1F pop ds
F000:CA06 5A pop dx
F000:CA07 59 pop cx
F000:CA08 07 pop es
F000:CA09 5B pop bx
F000:CA0A EB B2 jmp short loc_1020 ; (C9BE)
F000:CA0C 58 50 0A C0 74 1B db 58h, 50h, 0Ah, 0C0h, 74h, 1Bh
F000:CA12 3C 01 F9 75 A7 FA db 3Ch, 1, 0F9h, 75h, 0A7h, 0FAh
F000:CA18 E8 5A 24 24 BF E8 db 0E8h, 5Ah, 24h, 24h, 0BFh, 0E8h
F000:CA1E 61 24 1E 6A 40 1F db 61h, 24h, 1Eh, 6Ah, 40h, 1Fh
F000:CA24 C6 06 A0 00 00 FB db 0C6h, 6, 0A0h, 0, 0, 0FBh
F000:CA2A 1F EB 91 E8 BA 01 db 1Fh, 0EBh, 91h, 0E8h, 0BAh, 1
F000:CA30 EB 8C D0 EA 74 03 db 0EBh, 8Ch, 0D0h, 0EAh, 74h, 3
F000:CA36 E9 61 FF 58 BA 01 db 0E9h, 61h, 0FFh, 58h, 0BAh, 1
F000:CA3C 02 72 05 EC 24 F0 db 2, 72h, 5, 0ECh, 24h, 0F0h
F000:CA42 EB 1C db 0EBh, 1Ch
F000:CA44 loc_1023:
F000:CA44 B3 01 mov bl,1
F000:CA46 E8 01DB call sub_203 ; (CC24)
F000:CA49 D0 E3 shl bl,1 ; Shift w/zeros fill
F000:CA4B 51 push cx
F000:CA4C E8 01D5 call sub_203 ; (CC24)
F000:CA4F D0 E3 shl bl,1 ; Shift w/zeros fill
F000:CA51 51 push cx
F000:CA52 E8 01CF call sub_203 ; (CC24)
F000:CA55 D0 E3 shl bl,1 ; Shift w/zeros fill
F000:CA57 51 push cx
F000:CA58 E8 01C9 call sub_203 ; (CC24)
F000:CA5B 5A pop dx
F000:CA5C 5B pop bx
F000:CA5D 58 pop ax
F000:CA5E 87 CA xchg cx,dx
F000:CA60 loc_ret_1024:
F000:CA60 CA 0002 retf 2 ; Return far
F000:CA63 FA E8 B4 C4 58 75 db 0FAh, 0E8h, 0B4h, 0C4h, 58h, 75h
F000:CA69 3F E8 73 24 06 1F db 3Fh, 0E8h, 73h, 24h, 6, 1Fh
F000:CA6F 56 53 83 C6 38 E8 db 56h, 53h, 83h, 0C6h, 38h, 0E8h
F000:CA75 52 01 5B 5E 58 83 db 52h, 1, 5Bh, 5Eh, 58h, 83h
F000:CA7B C4 02 6A 30 50 0F db 0C4h, 2, 6Ah, 30h, 50h, 0Fh
F000:CA81 01 54 08 0F 01 5C db 1, 54h, 8, 0Fh, 1, 5Ch
F000:CA87 10 0F 01 E0 25 1F db 10h, 0Fh, 1, 0E0h, 25h, 1Fh
F000:CA8D 00 0C 01 90 0F 01 db 0, 0Ch, 1, 90h, 0Fh, 1
F000:CA93 F0 EA 99 CA 38 00 db 0F0h, 0EAh, 99h, 0CAh, 38h, 0
F000:CA99 B0 28 8E D0 B0 18 db 0B0h, 28h, 8Eh, 0D0h, 0B0h, 18h
F000:CA9F 8E D8 B0 20 8E C0 db 8Eh, 0D8h, 0B0h, 20h, 8Eh, 0C0h
F000:CAA5 33 C0 EB 04 F9 B8 db 33h, 0C0h, 0EBh, 4, 0F9h, 0B8h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 219
F000:CAAB FF FF db 0FFh, 0FFh
F000:CAAD loc_ret_1025:
F000:CAAD CA 0002 retf 2 ; Return far
F000:CAB0 loc_1026: ; xref F000:CAB8
F000:CAB0 E9 0105 jmp loc_1032 ; (CBB8)
F000:CAB3 loc_1027: ; xref F000:C96A
F000:CAB3 FA cli ; Disable interrupts
F000:CAB4 E8 C483 call sub_46 ; (8F3A)
F000:CAB7 58 pop ax
F000:CAB8 75 F6 jnz loc_1026 ; Jump if not zero
F000:CABA 60 pusha ; Save all regs
F000:CABB 06 push es
F000:CABC 1E push ds
F000:CABD B0 02 mov al,2
F000:CABF E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CAC1 B8 0040 mov ax,seg_b
F000:CAC4 8E D8 mov ds,ax
F000:CAC6 B8 098F mov ax,98Fh
F000:CAC9 E8 23C6 call sub_256 ; (EE92)
assume ds:seg_b
F000:CACC 89 26 0067 mov @gen_io_ptr,sp ; (0040:0067=522h)
F000:CAD0 8C D0 mov ax,ss
F000:CAD2 A3 0069 mov @gen_io_seg,ax ; (0040:0069=9087h)
F000:CAD5 8C C0 mov ax,es
F000:CAD7 8E D8 mov ds,ax
F000:CAD9 E8 0105 call sub_201 ; (CBE1)
F000:CADC 03 C6 add ax,si
F000:CADE 80 D3 00 adc bl,0
F000:CAE1 32 FF xor bh,bh ; Zero register
F000:CAE3 83 C6 08 add si,8
F000:CAE6 E8 00E9 call sub_200 ; (CBD2)
F000:CAE9 0F 01 14 lgdt qword ptr [si] ; Load global des tbl
F000:CAEC 83 C6 18 add si,18h
F000:CAEF E8 00D7 call sub_199 ; (CBC9)
F000:CAF2 8C D0 mov ax,ss
F000:CAF4 E8 00EA call sub_201 ; (CBE1)
F000:CAF7 B7 93 mov bh,93h
F000:CAF9 83 C6 08 add si,8
F000:CAFC E8 00D3 call sub_200 ; (CBD2)
F000:CAFF 2E: 0F 01 1E E270 lidt qword ptr cs:data_153 ; (F000:E270=100h) Load int des table
F000:CB05 0F 01 E0 smsw ax ; Store machine stat
F000:CB08 25 001F and ax,1Fh
F000:CB0B 0C 01 or al,1
F000:CB0D 90 nop ;
F000:CB0E 90 nop ;
F000:CB0F 0F 01 F0 lmsw ax ; Load machine status
;* This jump is a protected mode jump to flush the pre-fetch queue -
;* - the segment selector was ignored.
F000:CB12 EA 0020CB17 jmp far ptr loc_1028 ; (CB17)
F000:CB17 loc_1028: ; xref F000:CB12
F000:CB17 B0 28 mov al,28h ; '('
F000:CB19 8E D0 mov ss,ax
F000:CB1B B0 10 mov al,10h
F000:CB1D 8E D8 mov ds,ax
F000:CB1F B0 18 mov al,18h
F000:CB21 8E C0 mov es,ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 220
F000:CB23 33 F6 xor si,si ; Zero register
F000:CB25 33 FF xor di,di ; Zero register
F000:CB27 FC cld ; Clear direction
F000:CB28 D1 E9 shr cx,1 ; Shift w/zeros fill
F000:CB2A 66| F3/ A5 rep movsd ; Rep when cx >0 Mov [si] to es:[di]
F000:CB2D 73 01 jnc short loc_1029 ; Jump if carry=0
F000:CB2F A5 movsw ; Mov [si] to es:[di]
F000:CB30 loc_1029: ; xref F000:CB2D
F000:CB30 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:CB32 A8 C0 test al,0C0h
F000:CB34 74 17 jz short loc_1030 ; Jump if zero
F000:CB36 83 EE 04 sub si,4
F000:CB39 8B 04 mov ax,[si]
F000:CB3B 89 04 mov [si],ax
F000:CB3D 8B 44 02 mov ax,[si+2]
F000:CB40 89 44 02 mov [si+2],ax
F000:CB43 8B 04 mov ax,[si]
F000:CB45 8B 44 02 mov ax,[si+2]
F000:CB48 E8 C2F8 call sub_33 ; (8E43)
F000:CB4B B4 01 mov ah,1
F000:CB4D loc_1030: ; xref F000:CB34
F000:CB4D 8A C4 mov al,ah
F000:CB4F E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CB51 B8 008F mov ax,8Fh
F000:CB54 E8 233B call sub_256 ; (EE92)
F000:CB57 2E: 0F 01 16 E268 lgdt qword ptr cs:data_152 ; (F000:E268=60h) Load global des tbl
F000:CB5D B8 0040 mov ax,seg_b
F000:CB60 8E D8 mov ds,ax
F000:CB62 8E C0 mov es,ax
F000:CB64 8E D0 mov ss,ax
F000:CB66 66| C1 C8 10 ror eax,10h ; Rotate
F000:CB6A 8B C8 mov cx,ax
F000:CB6C 0F 20 C0 mov eax,cr0 ; Mov reg-control reg
F000:CB6F 66| 25 7FFFFFFE and eax,7FFFFFFEh
F000:CB75 90 nop ;
F000:CB76 90 nop ;
F000:CB77 0F 22 C0 mov cr0,eax ; Mov reg-control reg
F000:CB7A EA F000CB7F jmp far ptr loc_1031 ; (CB7F)
F000:CB7F loc_1031: ; xref F000:CB7A
F000:CB7F 2E: 0F 01 1E E2B8 lidt qword ptr cs:data_157 ; (F000:E2B8=0FFFFh) Load int des tabl
F000:CB85 2E: 0F 01 16 E2A0 lgdt qword ptr cs:data_155 ; (F000:E2A0=0FFFFh) Load global des t
F000:CB8B 8B C1 mov ax,cx
F000:CB8D 66| C1 C8 10 ror eax,10h ; Rotate
F000:CB91 B8 0040 mov ax,seg_b
F000:CB94 8E D8 mov ds,ax
F000:CB96 A1 0069 mov ax,@gen_io_seg ; (0040:0069=9087h)
F000:CB99 8E D0 mov ss,ax
F000:CB9B 8B 26 0067 mov sp,@gen_io_ptr ; (0040:0067=522h)
F000:CB9F E8 C355 call sub_44 ; (8EF7)
F000:CBA2 E8 C36F call sub_45 ; (8F14)
F000:CBA5 B0 0D mov al,0Dh
F000:CBA7 E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 0Dh, status register D
F000:CBA9 1F pop ds
F000:CBAA 07 pop es
F000:CBAB 61 popa ; Restore all regs
F000:CBAC 86 C4 xchg al,ah
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 221
F000:CBAE E4 80 in al,80h ; port 80h, diagnostc chkpoint
F000:CBB0 86 C4 xchg al,ah
F000:CBB2 74 0C jz short loc_1033 ; Jump if zero
F000:CBB4 0A E4 or ah,ah ; Zero ?
F000:CBB6 75 08 jnz short loc_1033 ; Jump if not zero
F000:CBB8 loc_1032: ; xref F000:CAB0
F000:CBB8 B4 03 mov ah,3
F000:CBBA 86 C4 xchg al,ah
F000:CBBC E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CBBE 86 C4 xchg al,ah
F000:CBC0 loc_1033: ; xref F000:CBB2, CBB6
F000:CBC0 84 E4 test ah,ah
F000:CBC2 74 01 jz short loc_1034 ; Jump if zero
F000:CBC4 F9 stc ; Set carry flag
F000:CBC5 loc_1034: ; xref F000:CBC2
F000:CBC5 FB sti ; Enable interrupts
F000:CBC6 CA 0002 retf 2 ; Return far
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CAEF
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_199 proc near
F000:CBC9 BB 9B0F mov bx,9B0Fh
F000:CBCC 33 C0 xor ax,ax ; Zero register
F000:CBCE E8 0001 call sub_200 ; (CBD2)
F000:CBD1 C3 retn
sub_199 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CAE6, CAFC, CBCE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_200 proc near
F000:CBD2 89 44 02 mov [si+2],ax
F000:CBD5 89 5C 04 mov [si+4],bx
F000:CBD8 33 C0 xor ax,ax ; Zero register
F000:CBDA 89 44 06 mov [si+6],ax
F000:CBDD 48 dec ax
F000:CBDE 89 04 mov [si],ax
F000:CBE0 C3 retn
sub_200 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CAD9, CAF4
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_201 proc near
F000:CBE1 8A DC mov bl,ah
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 222
F000:CBE3 C1 E0 04 shl ax,4 ; Shift w/zeros fill
F000:CBE6 C0 EB 04 shr bl,4 ; Shift w/zeros fill
F000:CBE9 C3 retn
sub_201 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_202 proc near
F000:CBEA 1E push ds
F000:CBEB 6A 40 push 40h
F000:CBED 1F pop ds
F000:CBEE FA cli ; Disable interrupts
F000:CBEF F6 06 00A0 01 test timer_clk_flag,1 ; (0040:00A0=0)
F000:CBF4 F9 stc ; Set carry flag
F000:CBF5 75 22 jnz short loc_1035 ; Jump if not zero
F000:CBF7 E8 2270 call sub_251 ; (EE6A)
F000:CBFA C6 06 00A0 01 mov timer_clk_flag,1 ; (0040:00A0=0)
F000:CBFF 89 1E 0098 mov @timer_wait_off,bx ; (0040:0098=0)
F000:CC03 8C 06 009A mov @timer_wait_seg,es ; (0040:009A=0)
F000:CC07 89 16 009C mov timer_clk_low,dx ; (0040:009C=0)
F000:CC0B 89 0E 009E mov timer_clk_hi,cx ; (0040:009E=0)
F000:CC0F E8 2263 call sub_252 ; (EE75)
F000:CC12 24 7F and al,7Fh
F000:CC14 0C 40 or al,40h ; '@'
F000:CC16 E8 2268 call sub_254 ; (EE81)
F000:CC19 loc_1035: ; xref F000:CBF5
F000:CC19 FB sti ; Enable interrupts
F000:CC1A 1F pop ds
F000:CC1B C3 retn
sub_202 endp
F000:CC1C loc_1036: ; xref F000:CC21
F000:CC1C D1 E9 shr cx,1 ; Shift w/zeros fill
F000:CC1E D1 DA rcr dx,1 ; Rotate thru carry
F000:CC20 4B dec bx
F000:CC21 75 F9 jnz loc_1036 ; Jump if not zero
F000:CC23 C3 retn
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CA46, CA4C, CA52, CA58
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_203 proc near
F000:CC24 FA cli ; Disable interrupts
F000:CC25 E8 002C call sub_204 ; (CC54)
F000:CC28 EE out dx,al ; port 0, DMA-1 bas&add ch 0
F000:CC29 50 push ax
F000:CC2A B9 0100 mov cx,100h
F000:CC2D 8A E3 mov ah,bl
F000:CC2F E8 2328 call sub_260 ; (EF5A)
F000:CC32 58 pop ax
F000:CC33 72 12 jc short loc_1038 ; Jump if carry Set
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 223
F000:CC35 8B C8 mov cx,ax
F000:CC37 E8 001A call sub_204 ; (CC54)
F000:CC3A 3B C8 cmp cx,ax
F000:CC3C 73 01 jae short loc_1037 ; Jump if above or =
F000:CC3E 40 inc ax
F000:CC3F loc_1037: ; xref F000:CC3C
F000:CC3F 2B C8 sub cx,ax
F000:CC41 C1 E9 04 shr cx,4 ; Shift w/zeros fill
F000:CC44 80 E5 01 and ch,1
F000:CC47 loc_1038: ; xref F000:CC33
F000:CC47 FB sti ; Enable interrupts
F000:CC48 51 push cx
F000:CC49 B9 0100 mov cx,100h
F000:CC4C B4 0F mov ah,0Fh
F000:CC4E E8 2309 call sub_260 ; (EF5A)
F000:CC51 F8 clc ; Clear carry flag
F000:CC52 59 pop cx
F000:CC53 C3 retn
sub_203 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CC25, CC37
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_204 proc near
F000:CC54 B0 00 mov al,0
F000:CC56 E6 43 out 43h,al ; port 43h, 8253 wrt timr mode
; al = 0, timer 0 count mode
F000:CC58 EB 00 jmp short loc_1039 ; (CC5A)
F000:CC5A loc_1039: ; xref F000:CC58
F000:CC5A EB 00 jmp short loc_1040 ; (CC5C)
F000:CC5C loc_1040: ; xref F000:CC5A
F000:CC5C E4 40 in al,40h ; port 40h, 8253 timer 0 clock
F000:CC5E 86 C4 xchg al,ah
F000:CC60 EB 00 jmp short loc_1041 ; (CC62)
F000:CC62 loc_1041: ; xref F000:CC60
F000:CC62 EB 00 jmp short loc_1042 ; (CC64)
F000:CC64 loc_1042: ; xref F000:CC62
F000:CC64 E4 40 in al,40h ; port 40h, 8253 timer 0 clock
F000:CC66 86 C4 xchg al,ah
F000:CC68 C3 retn
sub_204 endp
F000:CC69 00 db 0
F000:CC6A loc_1043: ; xref F000:ABB4
F000:CC6A E6 0D out 0Dh,al ; port 0Dh, DMA-1 master clear
F000:CC6C EB 00 jmp short loc_1044 ; (CC6E)
F000:CC6E loc_1044: ; xref F000:CC6C
F000:CC6E EB 00 jmp short loc_1045 ; (CC70)
F000:CC70 loc_1045: ; xref F000:CC6E
F000:CC70 E6 DA out 0DAh,al ; port 0DAh, DMA-2 master clear
F000:CC72 B0 04 mov al,4
F000:CC74 EB 00 jmp short loc_1046 ; (CC76)
F000:CC76 loc_1046: ; xref F000:CC74
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 224
F000:CC76 EB 00 jmp short loc_1047 ; (CC78)
F000:CC78 loc_1047: ; xref F000:CC76
F000:CC78 E6 08 out 8,al ; port 8, DMA-1 command reg
F000:CC7A EB 00 jmp short loc_1048 ; (CC7C)
F000:CC7C loc_1048: ; xref F000:CC7A
F000:CC7C EB 00 jmp short loc_1049 ; (CC7E)
F000:CC7E loc_1049: ; xref F000:CC7C
F000:CC7E E6 D0 out 0D0h,al ; port 0D0h, DMA-2 command reg
F000:CC80 33 DB xor bx,bx ; Zero register
F000:CC82 BA 007F mov dx,7Fh
F000:CC85 B9 0010 mov cx,10h
F000:CC88 locloop_1050: ; xref F000:CC8C
F000:CC88 42 inc dx
F000:CC89 E8 00F6 call sub_208 ; (CD82)
F000:CC8C E1 FA loopz locloop_1050 ; Loop if zf=1, cx>0
F000:CC8E B0 50 mov al,50h ; 'P'
F000:CC90 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CC92 E8 A9D9 call $-5624h
F000:CC95 B0 51 mov al,51h ; 'Q'
F000:CC97 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CC99 EB 00 jmp short loc_1051 ; (CC9B)
F000:CC9B loc_1051: ; xref F000:CC99
F000:CC9B EB 00 jmp short loc_1052 ; (CC9D)
F000:CC9D loc_1052: ; xref F000:CC9B
F000:CC9D E6 0C out 0Ch,al ; port 0Ch, DMA-1 clr byte ptr
F000:CC9F EB 00 jmp short loc_1053 ; (CCA1)
F000:CCA1 loc_1053: ; xref F000:CC9F
F000:CCA1 EB 00 jmp short loc_1054 ; (CCA3)
F000:CCA3 loc_1054: ; xref F000:CCA1
F000:CCA3 E6 D8 out 0D8h,al ; port 0D8h, DMA-2 clr byte ptr
F000:CCA5 4B dec bx
F000:CCA6 BA FFFF mov dx,0FFFFh
F000:CCA9 B9 0008 mov cx,8
F000:CCAC 51 push cx
F000:CCAD locloop_1055: ; xref F000:CCB1
F000:CCAD 42 inc dx
F000:CCAE E8 00D1 call sub_208 ; (CD82)
F000:CCB1 E1 FA loopz locloop_1055 ; Loop if zf=1, cx>0
F000:CCB3 B0 52 mov al,52h ; 'R'
F000:CCB5 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CCB7 BA 00BE mov dx,0BEh
F000:CCBA 59 pop cx
F000:CCBB locloop_1056: ; xref F000:CCC0
F000:CCBB 42 inc dx
F000:CCBC 42 inc dx
F000:CCBD E8 00C2 call sub_208 ; (CD82)
F000:CCC0 E1 F9 loopz locloop_1056 ; Loop if zf=1, cx>0
F000:CCC2 B0 53 mov al,53h ; 'S'
F000:CCC4 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CCC6 E8 A9F2 call $-560Bh
F000:CCC9 B0 54 mov al,54h ; 'T'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 225
F000:CCCB E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CCCD 68 CCD4 push 0CCD4h
F000:CCD0 68 FA4E push 0FA4Eh
F000:CCD3 C3 retn
F000:CCD4 B0 55 E6 80 EB 00 db 0B0h, 55h, 0E6h, 80h, 0EBh, 0
F000:CCDA EB 00 db 0EBh, 0
F000:CCDC loc_1057:
F000:CCDC E6 0C out 0Ch,al ; port 0Ch, DMA-1 clr byte ptr
F000:CCDE EB 00 jmp short loc_1058 ; (CCE0)
F000:CCE0 loc_1058: ; xref F000:CCDE
F000:CCE0 EB 00 jmp short loc_1059 ; (CCE2)
F000:CCE2 loc_1059: ; xref F000:CCE0
F000:CCE2 E6 D8 out 0D8h,al ; port 0D8h, DMA-2 clr byte ptr
F000:CCE4 B0 00 mov al,0
F000:CCE6 EB 00 jmp short loc_1060 ; (CCE8)
F000:CCE8 loc_1060: ; xref F000:CCE6
F000:CCE8 EB 00 jmp short loc_1061 ; (CCEA)
F000:CCEA loc_1061: ; xref F000:CCE8
F000:CCEA E6 08 out 8,al ; port 8, DMA-1 command reg
F000:CCEC EB 00 jmp short loc_1062 ; (CCEE)
F000:CCEE loc_1062: ; xref F000:CCEC
F000:CCEE EB 00 jmp short loc_1063 ; (CCF0)
F000:CCF0 loc_1063: ; xref F000:CCEE
F000:CCF0 E6 D0 out 0D0h,al ; port 0D0h, DMA-2 command reg
F000:CCF2 E8 003E call sub_205 ; (CD33)
F000:CCF5 B0 56 mov al,56h ; 'V'
F000:CCF7 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CCF9 B0 00 mov al,0
F000:CCFB E6 D2 out 0D2h,al ; port 0D2h, DMA-2 request reg
F000:CCFD EB 00 jmp short loc_1064 ; (CCFF)
F000:CCFF loc_1064: ; xref F000:CCFD
F000:CCFF EB 00 jmp short loc_1065 ; (CD01)
F000:CD01 loc_1065: ; xref F000:CCFF
F000:CD01 E6 D4 out 0D4h,al ; port 0D4h, DMA-2 mask reg bit
F000:CD03 EB 13 jmp short loc_1066 ; (CD18)
F000:CD05 90 BE 76 7D E9 88 db 90h, 0BEh, 76h, 7Dh, 0E9h, 88h
F000:CD0B C0 BE 5C 7D E9 82 db 0C0h, 0BEh, 5Ch, 7Dh, 0E9h, 82h
F000:CD11 C0 BE 69 7D E9 7C db 0C0h, 0BEh, 69h, 7Dh, 0E9h, 7Ch
F000:CD17 C0 db 0C0h
F000:CD18 loc_1066: ; xref F000:CD03
F000:CD18 FA cli ; Disable interrupts
F000:CD19 BB 0870 mov bx,870h
F000:CD1C E8 21BD call sub_259 ; (EEDC)
F000:CD1F B0 57 mov al,57h ; 'W'
F000:CD21 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:CD23 B0 FA mov al,0FAh
F000:CD25 E6 21 out 21h,al ; port 21h, 8259-1 int comands
; al = 0FAh, IRQ0 & 2 only
F000:CD27 B0 FF mov al,0FFh
F000:CD29 EB 00 jmp short loc_1067 ; (CD2B)
F000:CD2B loc_1067: ; xref F000:CD29
F000:CD2B EB 00 jmp short loc_1068 ; (CD2D)
F000:CD2D loc_1068: ; xref F000:CD2B
F000:CD2D E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
; al = 0FFh, inhibit interrupts
F000:CD2F FB sti ; Enable interrupts
F000:CD30 E9 C65B jmp loc_326 ; (938E)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 226
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CCF2
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_205 proc near
F000:CD33 EB 00 jmp short loc_1069 ; (CD35)
F000:CD35 loc_1069: ; xref F000:CD33
F000:CD35 EB 00 jmp short loc_1070 ; (CD37)
F000:CD37 loc_1070: ; xref F000:CD35
F000:CD37 B0 C0 mov al,0C0h
F000:CD39 E6 D6 out 0D6h,al ; port 0D6h, DMA-2 mode reg
F000:CD3B B0 40 mov al,40h ; '@'
F000:CD3D EB 00 jmp short loc_1071 ; (CD3F)
F000:CD3F loc_1071: ; xref F000:CD3D
F000:CD3F EB 00 jmp short loc_1072 ; (CD41)
F000:CD41 loc_1072: ; xref F000:CD3F
F000:CD41 E6 0B out 0Bh,al ; port 0Bh, DMA-1 mode reg
F000:CD43 E8 0007 call sub_206 ; (CD4D)
F000:CD46 E8 0004 call sub_206 ; (CD4D)
F000:CD49 E8 0001 call sub_206 ; (CD4D)
F000:CD4C C3 retn
sub_205 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CD43, CD46, CD49
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_206 proc near
F000:CD4D EB 00 jmp short loc_1073 ; (CD4F)
F000:CD4F loc_1073: ; xref F000:CD4D
F000:CD4F EB 00 jmp short loc_1074 ; (CD51)
F000:CD51 loc_1074: ; xref F000:CD4F
F000:CD51 40 inc ax
F000:CD52 E6 0B out 0Bh,al ; port 0Bh, DMA-1 mode reg
F000:CD54 EB 00 jmp short loc_1075 ; (CD56)
F000:CD56 loc_1075: ; xref F000:CD54
F000:CD56 EB 00 jmp short loc_1076 ; (CD58)
F000:CD58 loc_1076: ; xref F000:CD56
F000:CD58 E6 D6 out 0D6h,al ; port 0D6h, DMA-2 mode reg
F000:CD5A C3 retn
sub_206 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CD85, CD8D, CD95, CD9D
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_207 proc near
F000:CD5B 50 push ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 227
F000:CD5C EE out dx,al ; port 3BCh, MDA printer-1 data
F000:CD5D EB 00 jmp short loc_1077 ; (CD5F)
F000:CD5F loc_1077: ; xref F000:CD5D
F000:CD5F EB 00 jmp short loc_1078 ; (CD61)
F000:CD61 loc_1078: ; xref F000:CD5F
F000:CD61 86 C4 xchg al,ah
F000:CD63 0B DB or bx,bx ; Zero ?
F000:CD65 74 09 jz short loc_1082 ; Jump if zero
F000:CD67 EB 00 jmp short loc_1079 ; (CD69)
F000:CD69 loc_1079: ; xref F000:CD67
F000:CD69 EE out dx,al ; port 3BCh, MDA printer-1 data
F000:CD6A EB 00 jmp short loc_1080 ; (CD6C)
F000:CD6C loc_1080: ; xref F000:CD6A
F000:CD6C EB 00 jmp short loc_1081 ; (CD6E)
F000:CD6E loc_1081: ; xref F000:CD6C
F000:CD6E EB 00 jmp short loc_1082 ; (CD70)
F000:CD70 loc_1082: ; xref F000:CD65, CD6E
F000:CD70 EC in al,dx ; port 3BCh, MDA printer-1 data
F000:CD71 3A C4 cmp al,ah
F000:CD73 58 pop ax
F000:CD74 75 0B jnz short loc_ret_1085 ; Jump if not zero
F000:CD76 0B DB or bx,bx ; Zero ?
F000:CD78 74 07 jz short loc_ret_1085 ; Jump if zero
F000:CD7A EB 00 jmp short loc_1083 ; (CD7C)
F000:CD7C loc_1083: ; xref F000:CD7A
F000:CD7C EB 00 jmp short loc_1084 ; (CD7E)
F000:CD7E loc_1084: ; xref F000:CD7C
F000:CD7E EC in al,dx ; port 3BCh, MDA printer-1 data
F000:CD7F 3A C4 cmp al,ah
F000:CD81 loc_ret_1085: ; xref F000:CD74, CD78
F000:CD81 C3 retn
sub_207 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9840, CC89, CCAE, CCBD
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_208 proc near
F000:CD82 B8 AA55 mov ax,0AA55h
F000:CD85 E8 FFD3 call sub_207 ; (CD5B)
F000:CD88 75 18 jnz short loc_ret_1086 ; Jump if not zero
F000:CD8A B8 55AA mov ax,55AAh
F000:CD8D E8 FFCB call sub_207 ; (CD5B)
F000:CD90 75 10 jnz short loc_ret_1086 ; Jump if not zero
F000:CD92 B8 CC0F mov ax,0CC0Fh
F000:CD95 E8 FFC3 call sub_207 ; (CD5B)
F000:CD98 75 08 jnz short loc_ret_1086 ; Jump if not zero
F000:CD9A B8 0000 mov ax,0
F000:CD9D E8 FFBB call sub_207 ; (CD5B)
F000:CDA0 75 00 jnz short loc_ret_1086 ; Jump if not zero
F000:CDA2 loc_ret_1086: ; xref F000:CD88, CD90, CD98, CDA0
F000:CDA2 C3 retn
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 228
sub_208 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:91A7
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_209 proc near
F000:CDA3 FA cli ; Disable interrupts
F000:CDA4 FC cld ; Clear direction
F000:CDA5 F7 C5 4000 test bp,4000h
F000:CDA9 74 01 jz short loc_1087 ; Jump if zero
F000:CDAB C3 retn
F000:CDAC loc_1087: ; xref F000:CDA9
F000:CDAC 06 push es
F000:CDAD 1E push ds
F000:CDAE E6 FB out 0FBh,al ; port 0FBh
F000:CDB0 B0 B8 mov al,0B8h
F000:CDB2 E8 20D4 call sub_255 ; (EE89)
F000:CDB5 A8 80 test al,80h
F000:CDB7 75 09 jnz short loc_1088 ; Jump if not zero
F000:CDB9 B0 03 mov al,3
F000:CDBB E8 29BB call sub_267 ; (F779)
F000:CDBE A8 1F test al,1Fh
F000:CDC0 74 6F jz short loc_1090 ; Jump if zero
F000:CDC2 loc_1088: ; xref F000:CDB7
F000:CDC2 B8 0F0F mov ax,0F0Fh
F000:CDC5 E8 29B1 call sub_267 ; (F779)
F000:CDC8 50 push ax
F000:CDC9 B8 1010 mov ax,1010h
F000:CDCC E8 29AA call sub_267 ; (F779)
F000:CDCF 50 push ax
F000:CDD0 B8 1111 mov ax,1111h
F000:CDD3 E8 29A3 call sub_267 ; (F779)
F000:CDD6 50 push ax
F000:CDD7 B8 1212 mov ax,1212h
F000:CDDA E8 299C call sub_267 ; (F779)
F000:CDDD 50 push ax
F000:CDDE B8 550F mov ax,550Fh
F000:CDE1 E8 2984 call sub_266 ; (F768)
F000:CDE4 B8 5510 mov ax,5510h
F000:CDE7 E8 297E call sub_266 ; (F768)
F000:CDEA B8 5511 mov ax,5511h
F000:CDED E8 2978 call sub_266 ; (F768)
F000:CDF0 B8 5512 mov ax,5512h
F000:CDF3 E8 2972 call sub_266 ; (F768)
F000:CDF6 06 push es
F000:CDF7 B8 C000 mov ax,0C000h
F000:CDFA 8E C0 mov es,ax
F000:CDFC B9 0004 mov cx,4
F000:CDFF FA cli ; Disable interrupts
F000:CE00 FC cld ; Clear direction
F000:CE01 locloop_1089: ; xref F000:CE0D
F000:CE01 51 push cx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 229
F000:CE02 E8 DF92 call sub_131 ; (AD97)
F000:CE05 8C C0 mov ax,es
F000:CE07 80 C4 10 add ah,10h
F000:CE0A 8E C0 mov es,ax
F000:CE0C 59 pop cx
F000:CE0D E2 F2 loop locloop_1089 ; Loop if cx > 0
F000:CE0F 07 pop es
F000:CE10 58 pop ax
F000:CE11 86 C4 xchg al,ah
F000:CE13 E8 2952 call sub_266 ; (F768)
F000:CE16 58 pop ax
F000:CE17 86 C4 xchg al,ah
F000:CE19 E8 294C call sub_266 ; (F768)
F000:CE1C 58 pop ax
F000:CE1D 86 C4 xchg al,ah
F000:CE1F E8 2946 call sub_266 ; (F768)
F000:CE22 58 pop ax
F000:CE23 86 C4 xchg al,ah
F000:CE25 E8 2940 call sub_266 ; (F768)
F000:CE28 B0 8E mov al,8Eh
F000:CE2A E8 205C call sub_255 ; (EE89)
F000:CE2D A8 C0 test al,0C0h
F000:CE2F 74 03 jz short loc_1091 ; Jump if zero
F000:CE31 loc_1090: ; xref F000:CDC0
F000:CE31 E9 00D9 jmp loc_1098 ; (CF0D)
F000:CE34 loc_1091: ; xref F000:CE2F
F000:CE34 B0 B8 mov al,0B8h
F000:CE36 E8 2050 call sub_255 ; (EE89)
F000:CE39 50 push ax
F000:CE3A 24 48 and al,48h ; 'H'
F000:CE3C 3C 40 cmp al,40h ; '@'
F000:CE3E 74 03 je short loc_1092 ; Jump if equal
F000:CE40 EB 57 jmp short loc_1093 ; (CE99)
F000:CE42 90 db 90h
F000:CE43 loc_1092: ; xref F000:CE3E
F000:CE43 B8 0012 mov ax,12h
F000:CE46 E8 291F call sub_266 ; (F768)
F000:CE49 B9 1000 mov cx,1000h
F000:CE4C 8E C1 mov es,cx
F000:CE4E B9 8000 mov cx,8000h
F000:CE51 33 F6 xor si,si ; Zero register
F000:CE53 33 FF xor di,di ; Zero register
F000:CE55 2E: F3/ A5 rep movs word ptr es:[di],word ptr cs:[si] ; Rep when cx >0 Mov [si] to es:[di]
F000:CE58 B9 8000 mov cx,8000h
F000:CE5B 33 F6 xor si,si ; Zero register
F000:CE5D 33 FF xor di,di ; Zero register
F000:CE5F 2E: F3/ A7 repe cmps word ptr cs:[si],word ptr es:[di] ; Rep zf=1+cx >0 Cmp [si] to es:[di]
F000:CE62 75 35 jnz short loc_1093 ; Jump if not zero
F000:CE64 06 push es
F000:CE65 B8 CE6A mov ax,0CE6Ah
F000:CE68 50 push ax
F000:CE69 CB retf ; Return far
F000:CE6A B8 12 FF E8 F8 28 db 0B8h, 12h, 0FFh, 0E8h, 0F8h, 28h
F000:CE70 B9 00 F0 8E C1 B9 db 0B9h, 0, 0F0h, 8Eh, 0C1h, 0B9h
F000:CE76 00 80 33 F6 33 FF db 0, 80h, 33h, 0F6h, 33h, 0FFh
F000:CE7C 2E F3 A5 B9 00 80 db 2Eh, 0F3h, 0A5h, 0B9h, 0, 80h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 230
F000:CE82 33 F6 33 FF 2E F3 db 33h, 0F6h, 33h, 0FFh, 2Eh, 0F3h
F000:CE88 A7 B8 12 AA 74 02 db 0A7h, 0B8h, 12h, 0AAh, 74h, 2
F000:CE8E B4 00 E8 D5 28 06 db 0B4h, 0, 0E8h, 0D5h, 28h, 6
F000:CE94 B8 99 CE 50 CB db 0B8h, 99h, 0CEh, 50h, 0CBh
F000:CE99 loc_1093: ; xref F000:CE40, CE62
F000:CE99 58 pop ax
F000:CE9A 24 28 and al,28h ; '('
F000:CE9C 3C 20 cmp al,20h ; ' '
F000:CE9E 74 03 je short loc_1094 ; Jump if equal
F000:CEA0 EB 6B jmp short loc_1098 ; (CF0D)
F000:CEA2 90 db 90h
F000:CEA3 loc_1094: ; xref F000:CE9E
F000:CEA3 BA C000 mov dx,0C000h
F000:CEA6 8E DA mov ds,dx
F000:CEA8 B6 C8 mov dh,0C8h
F000:CEAA 33 C9 xor cx,cx ; Zero register
F000:CEAC loc_1095: ; xref F000:CECA
F000:CEAC 81 3E 0000 AA55 cmp word ptr ds:rom_chk_word,0AA55h ; (C000:0000=0AA55h)
F000:CEB2 52 push dx
F000:CEB3 BA 0080 mov dx,80h
F000:CEB6 75 09 jnz short loc_1096 ; Jump if not zero
F000:CEB8 B1 FF mov cl,0FFh
F000:CEBA 8A 16 0002 mov dl,ds:rom_chk_size ; (C000:0002=40h)
F000:CEBE C1 E2 05 shl dx,5 ; Shift w/zeros fill
F000:CEC1 loc_1096: ; xref F000:CEB6
F000:CEC1 8C D8 mov ax,ds
F000:CEC3 03 C2 add ax,dx
F000:CEC5 8E D8 mov ds,ax
F000:CEC7 5A pop dx
F000:CEC8 3B C2 cmp ax,dx
F000:CECA 72 E0 jb loc_1095 ; Jump if below
F000:CECC E3 3F jcxz short loc_1098 ; Jump if cx=0
F000:CECE B9 C000 mov cx,0C000h
F000:CED1 8E D9 mov ds,cx
F000:CED3 B9 1000 mov cx,1000h
F000:CED6 8E C1 mov es,cx
F000:CED8 B9 8000 mov cx,8000h
F000:CEDB 33 F6 xor si,si ; Zero register
F000:CEDD 33 FF xor di,di ; Zero register
F000:CEDF F3/ A5 rep movsw ; Rep when cx >0 Mov [si] to es:[di]
F000:CEE1 B8 0F0F mov ax,0F0Fh
F000:CEE4 E8 2881 call sub_266 ; (F768)
F000:CEE7 B9 1000 mov cx,1000h
F000:CEEA 8E D9 mov ds,cx
F000:CEEC B9 C000 mov cx,0C000h
F000:CEEF 8E C1 mov es,cx
F000:CEF1 B9 8000 mov cx,8000h
F000:CEF4 33 F6 xor si,si ; Zero register
F000:CEF6 33 FF xor di,di ; Zero register
F000:CEF8 F3/ A5 rep movsw ; Rep when cx >0 Mov [si] to es:[di]
F000:CEFA B9 8000 mov cx,8000h
F000:CEFD 33 F6 xor si,si ; Zero register
F000:CEFF 33 FF xor di,di ; Zero register
F000:CF01 F3/ A7 repe cmpsw ; Rep zf=1+cx >0 Cmp [si] to es:[di]
F000:CF03 B8 0A0F mov ax,0A0Fh
F000:CF06 74 02 jz short loc_1097 ; Jump if zero
F000:CF08 B4 00 mov ah,0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 231
F000:CF0A loc_1097: ; xref F000:CF06
F000:CF0A E8 285B call sub_266 ; (F768)
F000:CF0D loc_1098: ; xref F000:CE31, CEA0, CECC
F000:CF0D E6 F9 out 0F9h,al ; port 0F9h
F000:CF0F 1F pop ds
F000:CF10 07 pop es
F000:CF11 C3 retn
sub_209 endp
F000:CF12 32 ED B0 6A BC 1C db 32h, 0EDh, 0B0h, 6Ah, 0BCh, 1Ch
F000:CF18 CF E9 7D 28 1E CF db 0CFh, 0E9h, 7Dh, 28h, 1Eh, 0CFh
F000:CF1E A8 08 75 03 E9 65 db 0A8h, 8, 75h, 3, 0E9h, 65h
F000:CF24 01 8A C8 A8 01 74 db 1, 8Ah, 0C8h, 0A8h, 1, 74h
F000:CF2A 37 24 FE 8A E0 B0 db 37h, 24h, 0FEh, 8Ah, 0E0h, 0B0h
F000:CF30 6A 90 BC 38 CF E9 db 6Ah, 90h, 0BCh, 38h, 0CFh, 0E9h
F000:CF36 4E 28 3A CF B8 6F db 4Eh, 28h, 3Ah, 0CFh, 0B8h, 6Fh
F000:CF3C 6E 90 BC 44 CF E9 db 6Eh, 90h, 0BCh, 44h, 0CFh, 0E9h
F000:CF42 55 28 46 CF 86 C4 db 55h, 28h, 46h, 0CFh, 86h, 0C4h
F000:CF48 BC 4E CF E9 4B 28 db 0BCh, 4Eh, 0CFh, 0E9h, 4Bh, 28h
F000:CF4E 50 CF 40 40 8B D0 db 50h, 0CFh, 40h, 40h, 8Bh, 0D0h
F000:CF54 EC A8 F8 75 09 8A db 0ECh, 0A8h, 0F8h, 75h, 9, 8Ah
F000:CF5A C1 24 FE 8A C8 80 db 0C1h, 24h, 0FEh, 8Ah, 0C8h, 80h
F000:CF60 CD 02 db 0CDh, 2
F000:CF62 loc_1099:
F000:CF62 8A C1 mov al,cl
F000:CF64 A8 10 test al,10h
F000:CF66 74 41 jz short loc_1100 ; Jump if zero
F000:CF68 24 CF and al,0CFh
F000:CF6A 8A E0 mov ah,al
F000:CF6C B0 6A mov al,6Ah ; 'j'
F000:CF6E BC CF74 mov sp,0CF74h
F000:CF71 E9 2812 jmp loc_1443 ; (F786)
F000:CF74 76 CF B8 78 77 90 db 76h, 0CFh, 0B8h, 78h, 77h, 90h
F000:CF7A BC 80 CF E9 19 28 db 0BCh, 80h, 0CFh, 0E9h, 19h, 28h
F000:CF80 82 CF 86 C4 BC 8A db 82h, 0CFh, 86h, 0C4h, 0BCh, 8Ah
F000:CF86 CF E9 0F 28 8C CF db 0CFh, 0E9h, 0Fh, 28h, 8Ch, 0CFh
F000:CF8C 05 04 00 8B D0 32 db 5, 4, 0, 8Bh, 0D0h, 32h
F000:CF92 E4 90 BC 9A CF E9 db 0E4h, 90h, 0BCh, 9Ah, 0CFh, 0E9h
F000:CF98 98 27 9C CF 0A E4 db 98h, 27h, 9Ch, 0CFh, 0Ah, 0E4h
F000:CF9E 74 09 8A C1 24 CF db 74h, 9, 8Ah, 0C1h, 24h, 0CFh
F000:CFA4 8A C8 80 CD 10 db 8Ah, 0C8h, 80h, 0CDh, 10h
F000:CFA9 loc_1100: ; xref F000:CF66
F000:CFA9 8A E1 mov ah,cl
F000:CFAB B0 6A mov al,6Ah ; 'j'
F000:CFAD 90 nop ;
F000:CFAE BC CFB4 mov sp,0CFB4h
F000:CFB1 E9 27D2 jmp loc_1443 ; (F786)
F000:CFB4 B6 CF B0 69 BC BE db 0B6h, 0CFh, 0B0h, 69h, 0BCh, 0BEh
F000:CFBA CF E9 DB 27 C0 CF db 0CFh, 0E9h, 0DBh, 27h, 0C0h, 0CFh
F000:CFC0 8A C8 A8 10 74 3D db 8Ah, 0C8h, 0A8h, 10h, 74h, 3Dh
F000:CFC6 24 EF 8A E0 B0 69 db 24h, 0EFh, 8Ah, 0E0h, 0B0h, 69h
F000:CFCC BC D2 CF E9 B4 27 db 0BCh, 0D2h, 0CFh, 0E9h, 0B4h, 27h
F000:CFD2 D4 CF B8 72 71 90 db 0D4h, 0CFh, 0B8h, 72h, 71h, 90h
F000:CFD8 BC DE CF E9 BB 27 db 0BCh, 0DEh, 0CFh, 0E9h, 0BBh, 27h
F000:CFDE E0 CF 86 C4 BC E8 db 0E0h, 0CFh, 86h, 0C4h, 0BCh, 0E8h
F000:CFE4 CF E9 B1 27 EA CF db 0CFh, 0E9h, 0B1h, 27h, 0EAh, 0CFh
F000:CFEA 8B D0 32 E4 BC F4 db 8Bh, 0D0h, 32h, 0E4h, 0BCh, 0F4h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 232
F000:CFF0 CF E9 3E 27 F6 CF db 0CFh, 0E9h, 3Eh, 27h, 0F6h, 0CFh
F000:CFF6 0A E4 74 09 8A C1 db 0Ah, 0E4h, 74h, 9, 8Ah, 0C1h
F000:CFFC 24 EF 8A C8 80 CD db 24h, 0EFh, 8Ah, 0C8h, 80h, 0CDh
F000:D002 04 8A C1 A8 04 74 db 4, 8Ah, 0C1h, 0A8h, 4, 74h
F000:D008 37 24 FB 8A E0 B0 db 37h, 24h, 0FBh, 8Ah, 0E0h, 0B0h
F000:D00E 69 90 BC 16 D0 E9 db 69h, 90h, 0BCh, 16h, 0D0h, 0E9h
F000:D014 70 27 18 D0 B8 6C db 70h, 27h, 18h, 0D0h, 0B8h, 6Ch
F000:D01A 6B 90 BC 22 D0 E9 db 6Bh, 90h, 0BCh, 22h, 0D0h, 0E9h
F000:D020 77 27 24 D0 86 C4 db 77h, 27h, 24h, 0D0h, 86h, 0C4h
F000:D026 BC 2C D0 E9 6D 27 db 0BCh, 2Ch, 0D0h, 0E9h, 6Dh, 27h
F000:D02C 2E D0 40 40 8B D0 db 2Eh, 0D0h, 40h, 40h, 8Bh, 0D0h
F000:D032 EC A8 F8 75 09 8A db 0ECh, 0A8h, 0F8h, 75h, 9, 8Ah
F000:D038 C1 24 FB 8A C8 80 db 0C1h, 24h, 0FBh, 8Ah, 0C8h, 80h
F000:D03E CD 01 db 0CDh, 1
F000:D040 loc_1101:
F000:D040 8A C1 mov al,cl
F000:D042 A8 02 test al,2
F000:D044 74 37 jz short loc_1102 ; Jump if zero
F000:D046 24 FD and al,0FDh
F000:D048 8A E0 mov ah,al
F000:D04A B0 69 mov al,69h ; 'i'
F000:D04C BC D052 mov sp,0D052h
F000:D04F E9 2734 jmp loc_1443 ; (F786)
F000:D052 54 D0 B8 75 74 90 db 54h, 0D0h, 0B8h, 75h, 74h, 90h
F000:D058 BC 5E D0 E9 3B 27 db 0BCh, 5Eh, 0D0h, 0E9h, 3Bh, 27h
F000:D05E 60 D0 86 C4 BC 68 db 60h, 0D0h, 86h, 0C4h, 0BCh, 68h
F000:D064 D0 E9 31 27 6A D0 db 0D0h, 0E9h, 31h, 27h, 6Ah, 0D0h
F000:D06A 05 04 00 8B D0 EC db 5, 4, 0, 8Bh, 0D0h, 0ECh
F000:D070 3C FF 74 09 8A C1 db 3Ch, 0FFh, 74h, 9, 8Ah, 0C1h
F000:D076 24 FD 8A C8 80 CD db 24h, 0FDh, 8Ah, 0C8h, 80h, 0CDh
F000:D07C 08 db 8
F000:D07D loc_1102: ; xref F000:D044
F000:D07D 8A E1 mov ah,cl
F000:D07F B0 69 mov al,69h ; 'i'
F000:D081 90 nop ;
F000:D082 BC D088 mov sp,0D088h
F000:D085 E9 26FE jmp loc_1443 ; (F786)
F000:D088 8A D0 8A E5 B0 C0 db 8Ah, 0D0h, 8Ah, 0E5h, 0B0h, 0C0h
F000:D08E BC 94 D0 E9 FE 1D db 0BCh, 94h, 0D0h, 0E9h, 0FEh, 1Dh
F000:D094 96 D0 E9 20 24 00 db 96h, 0D0h, 0E9h, 20h, 24h, 0
F000:D09A 04 data_132 db 4 ; Data table (indexed access)
; xref F000:D54C
F000:D09B 02 00 05 03 01 06 db 2, 0, 5, 3, 1, 6
F000:D0A1 00 data_133 db 0 ; Data table (indexed access)
; xref F000:D585
F000:D0A2 03 03 06 01 04 06 db 3, 3, 6, 1, 4, 6
F000:D0A8 02 05 00 03 05 C9 db 2, 5, 0, 3, 5, 0C9h
F000:D0AE CD CD CD D1 CD CD db 0CDh, 0CDh, 0CDh, 0D1h, 0CDh, 0CDh
F000:D0B4 CD D1 CD CD CD D1 db 0CDh, 0D1h, 0CDh, 0CDh, 0CDh, 0D1h
F000:D0BA CD CD CD D1 CD CD db 0CDh, 0CDh, 0CDh, 0D1h, 0CDh, 0CDh
F000:D0C0 CD D1 CD CD CD D1 db 0CDh, 0D1h, 0CDh, 0CDh, 0CDh, 0D1h
F000:D0C6 CD CD CD B9 00 BA db 0CDh, 0CDh, 0CDh, 0B9h, 0, 0BAh
F000:D0CC 53 75 6E B3 4D 6F db 53h, 75h, 6Eh, 0B3h, 4Dh, 6Fh
F000:D0D2 6E B3 54 75 65 B3 db 6Eh, 0B3h, 54h, 75h, 65h, 0B3h
F000:D0D8 57 65 64 B3 54 68 db 57h, 65h, 64h, 0B3h, 54h, 68h
F000:D0DE 75 B3 46 72 69 B3 db 75h, 0B3h, 46h, 72h, 69h, 0B3h
F000:D0E4 53 61 74 BA 00 CC db 53h, 61h, 74h, 0BAh, 0, 0CCh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 233
F000:D0EA CD CD CD D8 CD CD db 0CDh, 0CDh, 0CDh, 0D8h, 0CDh, 0CDh
F000:D0F0 CD D8 CD CD CD D8 db 0CDh, 0D8h, 0CDh, 0CDh, 0CDh, 0D8h
F000:D0F6 CD CD CD D8 CD CD db 0CDh, 0CDh, 0CDh, 0D8h, 0CDh, 0CDh
F000:D0FC CD D8 CD CD CD D8 db 0CDh, 0D8h, 0CDh, 0CDh, 0CDh, 0D8h
F000:D102 CD CD CD B9 00 BA db 0CDh, 0CDh, 0CDh, 0B9h, 0, 0BAh
F000:D108 20 20 20 B3 20 20 db 20h, 20h, 20h, 0B3h, 20h, 20h
F000:D10E 20 B3 20 20 20 B3 db 20h, 0B3h, 20h, 20h, 20h, 0B3h
F000:D114 20 20 20 B3 20 20 db 20h, 20h, 20h, 0B3h, 20h, 20h
F000:D11A 20 B3 20 20 20 B3 db 20h, 0B3h, 20h, 20h, 20h, 0B3h
F000:D120 20 20 20 BA 00 C7 db 20h, 20h, 20h, 0BAh, 0, 0C7h
F000:D126 C4 C4 C4 C5 C4 C4 db 0C4h, 0C4h, 0C4h, 0C5h, 0C4h, 0C4h
F000:D12C C4 C5 C4 C4 C4 C5 db 0C4h, 0C5h, 0C4h, 0C4h, 0C4h, 0C5h
F000:D132 C4 C4 C4 C5 C4 C4 db 0C4h, 0C4h, 0C4h, 0C5h, 0C4h, 0C4h
F000:D138 C4 C5 C4 C4 C4 C5 db 0C4h, 0C5h, 0C4h, 0C4h, 0C4h, 0C5h
F000:D13E C4 C4 C4 B6 00 CA db 0C4h, 0C4h, 0C4h, 0B6h, 0, 0CAh
F000:D144 CD CD CD CF CD CD db 0CDh, 0CDh, 0CDh, 0CFh, 0CDh, 0CDh
F000:D14A CD CF CD CD CD CF db 0CDh, 0CFh, 0CDh, 0CDh, 0CDh, 0CFh
F000:D150 CD CD CD CF CD CD db 0CDh, 0CDh, 0CDh, 0CFh, 0CDh, 0CDh
F000:D156 CD CF CD CD CD CF db 0CDh, 0CFh, 0CDh, 0CDh, 0CDh, 0CFh
F000:D15C CD CD CD BC 00 db 0CDh, 0CDh, 0CDh, 0BCh, 0
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BE23
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_210 proc near
F000:D161 BE D0AD mov si,0D0ADh
F000:D164 BA 0A32 mov dx,0A32h
F000:D167 E8 F505 call sub_181 ; (C66F)
F000:D16A BE D0CB mov si,0D0CBh
F000:D16D BA 0B32 mov dx,0B32h
F000:D170 E8 F4FC call sub_181 ; (C66F)
F000:D173 BE D0E9 mov si,0D0E9h
F000:D176 BA 0C32 mov dx,0C32h
F000:D179 E8 F4F3 call sub_181 ; (C66F)
F000:D17C BA 0D32 mov dx,0D32h
F000:D17F B9 0006 mov cx,6
F000:D182 locloop_1103: ; xref F000:D196
F000:D182 BE D107 mov si,0D107h
F000:D185 52 push dx
F000:D186 E8 F4E6 call sub_181 ; (C66F)
F000:D189 5A pop dx
F000:D18A FE C6 inc dh
F000:D18C BE D125 mov si,0D125h
F000:D18F 52 push dx
F000:D190 E8 F4DC call sub_181 ; (C66F)
F000:D193 5A pop dx
F000:D194 FE C6 inc dh
F000:D196 E2 EA loop locloop_1103 ; Loop if cx > 0
F000:D198 BE D143 mov si,0D143h
F000:D19B FE CE dec dh
F000:D19D E8 F4CF call sub_181 ; (C66F)
F000:D1A0 C3 retn
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 234
sub_210 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BF9C
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_211 proc near
F000:D1A1 FA cli ; Disable interrupts
F000:D1A2 50 push ax
F000:D1A3 1E push ds
F000:D1A4 33 C0 xor ax,ax ; Zero register
F000:D1A6 8E D8 mov ds,ax
F000:D1A8 B8 D222 mov ax,0D222h
assume ds:seg_a
F000:D1AB 87 06 0040 xchg ax,vectr_10h_off ; (0000:0040=2E7h)
F000:D1AF A3 0280 mov ds:data_9e,ax ; (0000:0280=0)
F000:D1B2 8C C8 mov ax,cs
F000:D1B4 87 06 0042 xchg ax,vectr_10h_seg ; (0000:0042=0D3D1h)
F000:D1B8 A3 0282 mov ds:data_10e,ax ; (0000:0282=0)
F000:D1BB B8 D232 mov ax,0D232h
F000:D1BE 87 06 0068 xchg ax,ds:data_4e ; (0000:0068=0FE6Eh)
F000:D1C2 A3 0284 mov ds:data_11e,ax ; (0000:0284=0)
F000:D1C5 8C C8 mov ax,cs
F000:D1C7 87 06 006A xchg ax,ds:data_5e ; (0000:006A=0F000h)
F000:D1CB A3 0286 mov ds:data_12e,ax ; (0000:0286=0)
F000:D1CE B8 D252 mov ax,0D252h
F000:D1D1 87 06 0070 xchg ax,ds:data_6e ; (0000:0070=3C0h)
F000:D1D5 A3 0288 mov ds:data_13e,ax ; (0000:0288=0)
F000:D1D8 8C C8 mov ax,cs
F000:D1DA 87 06 0072 xchg ax,ds:data_7e ; (0000:0072=0D3D1h)
F000:D1DE A3 028A mov ds:data_14e,ax ; (0000:028A=0)
F000:D1E1 A1 046C mov ax,timer_low_ ; (0000:046C=0C319h)
F000:D1E4 2D 0011 sub ax,11h
F000:D1E7 A3 028C mov ds:data_15e,ax ; (0000:028C=0)
F000:D1EA 33 C0 xor ax,ax ; Zero register
F000:D1EC A3 028E mov ds:data_16e,ax ; (0000:028E=0)
F000:D1EF 1F pop ds
F000:D1F0 58 pop ax
F000:D1F1 FB sti ; Enable interrupts
F000:D1F2 C3 retn
sub_211 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:C036
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_212 proc near
F000:D1F3 FA cli ; Disable interrupts
F000:D1F4 50 push ax
F000:D1F5 1E push ds
F000:D1F6 33 C0 xor ax,ax ; Zero register
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 235
F000:D1F8 8E D8 mov ds,ax
F000:D1FA A1 0280 mov ax,ds:data_9e ; (0000:0280=0)
F000:D1FD A3 0040 mov vectr_10h_off,ax ; (0000:0040=2E7h)
F000:D200 A1 0282 mov ax,ds:data_10e ; (0000:0282=0)
F000:D203 A3 0042 mov vectr_10h_seg,ax ; (0000:0042=0D3D1h)
F000:D206 A1 0284 mov ax,ds:data_11e ; (0000:0284=0)
F000:D209 A3 0068 mov ds:data_4e,ax ; (0000:0068=0FE6Eh)
F000:D20C A1 0286 mov ax,ds:data_12e ; (0000:0286=0)
F000:D20F A3 006A mov ds:data_5e,ax ; (0000:006A=0F000h)
F000:D212 A1 0288 mov ax,ds:data_13e ; (0000:0288=0)
F000:D215 A3 0070 mov ds:data_6e,ax ; (0000:0070=3C0h)
F000:D218 A1 028A mov ax,ds:data_14e ; (0000:028A=0)
F000:D21B A3 0072 mov ds:data_7e,ax ; (0000:0072=0D3D1h)
F000:D21E 1F pop ds
F000:D21F 58 pop ax
F000:D220 FB sti ; Enable interrupts
F000:D221 C3 retn
sub_212 endp
F000:D222 50 1E 33 C0 8E D8 db 50h, 1Eh, 33h, 0C0h, 8Eh, 0D8h
F000:D228 FE 06 8E 02 1F 58 db 0FEh, 6, 8Eh, 2, 1Fh, 58h
F000:D22E CD A0 EB 0E 50 1E db 0CDh, 0A0h, 0EBh, 0Eh, 50h, 1Eh
F000:D234 33 C0 8E D8 FE 06 db 33h, 0C0h, 8Eh, 0D8h, 0FEh, 6
F000:D23A 8E 02 1F 58 CD A1 db 8Eh, 2, 1Fh, 58h, 0CDh, 0A1h
F000:D240 9C FA 50 1E 33 C0 db 9Ch, 0FAh, 50h, 1Eh, 33h, 0C0h
F000:D246 8E D8 FE 0E 8E 02 db 8Eh, 0D8h, 0FEh, 0Eh, 8Eh, 2
F000:D24C 1F 58 9D CA 02 00 db 1Fh, 58h, 9Dh, 0CAh, 2, 0
F000:D252 50 1E 33 C0 8E D8 db 50h, 1Eh, 33h, 0C0h, 8Eh, 0D8h
F000:D258 A1 6C 04 2B 06 8C db 0A1h, 6Ch, 4, 2Bh, 6, 8Ch
F000:D25E 02 3D 12 00 72 09 db 2, 3Dh, 12h, 0, 72h, 9
F000:D264 01 06 8C 02 C6 06 db 1, 6, 8Ch, 2, 0C6h, 6
F000:D26A 8F 02 FF 80 3E 8E db 8Fh, 2, 0FFh, 80h, 3Eh, 8Eh
F000:D270 02 00 75 11 80 3E db 2, 0, 75h, 11h, 80h, 3Eh
F000:D276 8F 02 FF 75 0A 60 db 8Fh, 2, 0FFh, 75h, 0Ah, 60h
F000:D27C E8 93 02 61 C6 06 db 0E8h, 93h, 2, 61h, 0C6h, 6
F000:D282 8F 02 00 db 8Fh, 2, 0
F000:D285 loc_1104:
F000:D285 1F pop ds
F000:D286 58 pop ax
F000:D287 CD A2 int 0A2h
F000:D289 CA 0002 retf 2 ; Return far
F000:D28C loc_1105: ; xref F000:D2C7, D2E0
F000:D28C BA 031B mov dx,31Bh
F000:D28F B9 0005 mov cx,5
F000:D292 E8 01F2 call sub_213 ; (D487)
F000:D295 9C pushf ; Push flags
F000:D296 73 07 jnc short loc_1106 ; Jump if carry=0
F000:D298 74 05 jz short loc_1106 ; Jump if zero
F000:D29A 80 FC 01 cmp ah,1
F000:D29D 75 0B jne short loc_1107 ; Jump if not equal
F000:D29F loc_1106: ; xref F000:D296, D298
F000:D29F BA 031B mov dx,31Bh
F000:D2A2 B9 0005 mov cx,5
F000:D2A5 E8 01F4 call sub_215 ; (D49C)
F000:D2A8 9D popf ; Pop flags
F000:D2A9 C3 retn
F000:D2AA loc_1107: ; xref F000:D29D
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 236
F000:D2AA 9D popf ; Pop flags
F000:D2AB 80 FC 49 cmp ah,49h ; 'I'
F000:D2AE 74 19 je short loc_1110 ; Jump if equal
F000:D2B0 E8 03BA call sub_221 ; (D66D)
F000:D2B3 8A C6 mov al,dh
F000:D2B5 3C 12 cmp al,12h
F000:D2B7 75 04 jne short loc_1108 ; Jump if not equal
F000:D2B9 B0 01 mov al,1
F000:D2BB EB 05 jmp short loc_1109 ; (D2C2)
F000:D2BD loc_1108: ; xref F000:D2B7
F000:D2BD 0A C0 or al,al ; Zero ?
F000:D2BF FE C0 inc al
F000:D2C1 27 daa ; Decimal adjust
F000:D2C2 loc_1109: ; xref F000:D2BB
F000:D2C2 8A F0 mov dh,al
F000:D2C4 E8 01F8 call sub_218 ; (D4BF)
F000:D2C7 EB C3 jmp short loc_1105 ; (D28C)
F000:D2C9 loc_1110: ; xref F000:D2AE
F000:D2C9 E8 03A1 call sub_221 ; (D66D)
F000:D2CC 8A C6 mov al,dh
F000:D2CE 3C 01 cmp al,1
F000:D2D0 75 04 jne short loc_1111 ; Jump if not equal
F000:D2D2 B0 12 mov al,12h
F000:D2D4 EB 05 jmp short loc_1112 ; (D2DB)
F000:D2D6 loc_1111: ; xref F000:D2D0
F000:D2D6 0A C0 or al,al ; Zero ?
F000:D2D8 FE C8 dec al
F000:D2DA 2F das ; Decimal adjust
F000:D2DB loc_1112: ; xref F000:D2D4
F000:D2DB 8A F0 mov dh,al
F000:D2DD E8 01DF call sub_218 ; (D4BF)
F000:D2E0 EB AA jmp short loc_1105 ; (D28C)
F000:D2E2 loc_1113: ; xref F000:D31D, D336
F000:D2E2 BA 031F mov dx,31Fh
F000:D2E5 B9 0004 mov cx,4
F000:D2E8 E8 019C call sub_213 ; (D487)
F000:D2EB 9C pushf ; Push flags
F000:D2EC 73 07 jnc short loc_1114 ; Jump if carry=0
F000:D2EE 74 05 jz short loc_1114 ; Jump if zero
F000:D2F0 80 FC 01 cmp ah,1
F000:D2F3 75 0B jne short loc_1115 ; Jump if not equal
F000:D2F5 loc_1114: ; xref F000:D2EC, D2EE
F000:D2F5 BA 031F mov dx,31Fh
F000:D2F8 B9 0004 mov cx,4
F000:D2FB E8 019E call sub_215 ; (D49C)
F000:D2FE 9D popf ; Pop flags
F000:D2FF C3 retn
F000:D300 loc_1115: ; xref F000:D2F3
F000:D300 9D popf ; Pop flags
F000:D301 80 FC 49 cmp ah,49h ; 'I'
F000:D304 74 19 je short loc_1118 ; Jump if equal
F000:D306 E8 0364 call sub_221 ; (D66D)
F000:D309 8A C2 mov al,dl
F000:D30B 3C 31 cmp al,31h ; '1'
F000:D30D 75 04 jne short loc_1116 ; Jump if not equal
F000:D30F B0 01 mov al,1
F000:D311 EB 05 jmp short loc_1117 ; (D318)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 237
F000:D313 loc_1116: ; xref F000:D30D
F000:D313 0A C0 or al,al ; Zero ?
F000:D315 FE C0 inc al
F000:D317 27 daa ; Decimal adjust
F000:D318 loc_1117: ; xref F000:D311
F000:D318 8A D0 mov dl,al
F000:D31A E8 01A2 call sub_218 ; (D4BF)
F000:D31D EB C3 jmp short loc_1113 ; (D2E2)
F000:D31F loc_1118: ; xref F000:D304
F000:D31F E8 034B call sub_221 ; (D66D)
F000:D322 8A C2 mov al,dl
F000:D324 3C 01 cmp al,1
F000:D326 75 04 jne short loc_1119 ; Jump if not equal
F000:D328 B0 32 mov al,32h ; '2'
F000:D32A EB 05 jmp short loc_1120 ; (D331)
F000:D32C loc_1119: ; xref F000:D326
F000:D32C 0A C0 or al,al ; Zero ?
F000:D32E FE C8 dec al
F000:D330 2F das ; Decimal adjust
F000:D331 loc_1120: ; xref F000:D32A
F000:D331 8A D0 mov dl,al
F000:D333 E8 0184 call sub_217 ; (D4BA)
F000:D336 EB AA jmp short loc_1113 ; (D2E2)
F000:D338 loc_1121: ; xref F000:D37B, D39C
F000:D338 BA 0322 mov dx,322h
F000:D33B B9 0006 mov cx,6
F000:D33E E8 0146 call sub_213 ; (D487)
F000:D341 9C pushf ; Push flags
F000:D342 73 07 jnc short loc_1122 ; Jump if carry=0
F000:D344 74 05 jz short loc_1122 ; Jump if zero
F000:D346 80 FC 01 cmp ah,1
F000:D349 75 0B jne short loc_1123 ; Jump if not equal
F000:D34B loc_1122: ; xref F000:D342, D344
F000:D34B BA 0322 mov dx,322h
F000:D34E B9 0006 mov cx,6
F000:D351 E8 0148 call sub_215 ; (D49C)
F000:D354 9D popf ; Pop flags
F000:D355 C3 retn
F000:D356 loc_1123: ; xref F000:D349
F000:D356 9D popf ; Pop flags
F000:D357 80 FC 49 cmp ah,49h ; 'I'
F000:D35A 74 21 je short loc_1127 ; Jump if equal
F000:D35C E8 030E call sub_221 ; (D66D)
F000:D35F 8B C1 mov ax,cx
F000:D361 3D 2099 cmp ax,2099h
F000:D364 75 05 jne short loc_1124 ; Jump if not equal
F000:D366 B8 1901 mov ax,1901h
F000:D369 EB 0B jmp short loc_1126 ; (D376)
F000:D36B loc_1124: ; xref F000:D364
F000:D36B 3D 1999 cmp ax,1999h
F000:D36E 75 02 jne short loc_1125 ; Jump if not equal
F000:D370 B4 20 mov ah,20h ; ' '
F000:D372 loc_1125: ; xref F000:D36E
F000:D372 0B C0 or ax,ax ; Zero ?
F000:D374 40 inc ax
F000:D375 27 daa ; Decimal adjust
F000:D376 loc_1126: ; xref F000:D369
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 238
F000:D376 8B C8 mov cx,ax
F000:D378 E8 0144 call sub_218 ; (D4BF)
F000:D37B EB BB jmp short loc_1121 ; (D338)
F000:D37D loc_1127: ; xref F000:D35A
F000:D37D E8 02ED call sub_221 ; (D66D)
F000:D380 8B C1 mov ax,cx
F000:D382 3D 1901 cmp ax,1901h
F000:D385 75 05 jne short loc_1128 ; Jump if not equal
F000:D387 B8 2099 mov ax,2099h
F000:D38A EB 0B jmp short loc_1130 ; (D397)
F000:D38C loc_1128: ; xref F000:D385
F000:D38C 3D 2000 cmp ax,2000h
F000:D38F 75 02 jne short loc_1129 ; Jump if not equal
F000:D391 B4 1A mov ah,1Ah
F000:D393 loc_1129: ; xref F000:D38F
F000:D393 0B C0 or ax,ax ; Zero ?
F000:D395 48 dec ax
F000:D396 2F das ; Decimal adjust
F000:D397 loc_1130: ; xref F000:D38A
F000:D397 8B C8 mov cx,ax
F000:D399 E8 0123 call sub_218 ; (D4BF)
F000:D39C EB 9A jmp short loc_1121 ; (D338)
F000:D39E loc_1131: ; xref F000:D3DD, D3FA
F000:D39E BA 0416 mov dx,416h
F000:D3A1 B9 0004 mov cx,4
F000:D3A4 E8 00E5 call sub_214 ; (D48C)
F000:D3A7 9C pushf ; Push flags
F000:D3A8 73 07 jnc short loc_1132 ; Jump if carry=0
F000:D3AA 74 05 jz short loc_1132 ; Jump if zero
F000:D3AC 80 FC 01 cmp ah,1
F000:D3AF 75 0B jne short loc_1133 ; Jump if not equal
F000:D3B1 loc_1132: ; xref F000:D3A8, D3AA
F000:D3B1 BA 0416 mov dx,416h
F000:D3B4 B9 0004 mov cx,4
F000:D3B7 E8 00E2 call sub_215 ; (D49C)
F000:D3BA 9D popf ; Pop flags
F000:D3BB C3 retn
F000:D3BC loc_1133: ; xref F000:D3AF
F000:D3BC 9D popf ; Pop flags
F000:D3BD 80 FC 49 cmp ah,49h ; 'I'
F000:D3C0 74 1D je short loc_1136 ; Jump if equal
F000:D3C2 E8 02E2 call sub_222 ; (D6A7)
F000:D3C5 8A C5 mov al,ch
F000:D3C7 3C 23 cmp al,23h ; '#'
F000:D3C9 75 04 jne short loc_1134 ; Jump if not equal
F000:D3CB B0 00 mov al,0
F000:D3CD EB 05 jmp short loc_1135 ; (D3D4)
F000:D3CF loc_1134: ; xref F000:D3C9
F000:D3CF 0A C0 or al,al ; Zero ?
F000:D3D1 FE C0 inc al
F000:D3D3 27 daa ; Decimal adjust
F000:D3D4 loc_1135: ; xref F000:D3CD
F000:D3D4 8A E8 mov ch,al
F000:D3D6 B4 03 mov ah,3
F000:D3D8 CD 1A int 1Ah ; Real time clock ah=func 03h
; set clock cx=hrs/min, dh=sec
F000:D3DA E8 0135 call sub_219 ; (D512)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 239
F000:D3DD EB BF jmp short loc_1131 ; (D39E)
F000:D3DF loc_1136: ; xref F000:D3C0
F000:D3DF E8 02C5 call sub_222 ; (D6A7)
F000:D3E2 8A C5 mov al,ch
F000:D3E4 3C 00 cmp al,0
F000:D3E6 75 04 jne short loc_1137 ; Jump if not equal
F000:D3E8 B0 23 mov al,23h ; '#'
F000:D3EA EB 05 jmp short loc_1138 ; (D3F1)
F000:D3EC loc_1137: ; xref F000:D3E6
F000:D3EC 0A C0 or al,al ; Zero ?
F000:D3EE FE C8 dec al
F000:D3F0 2F das ; Decimal adjust
F000:D3F1 loc_1138: ; xref F000:D3EA
F000:D3F1 8A E8 mov ch,al
F000:D3F3 B4 03 mov ah,3
F000:D3F5 CD 1A int 1Ah ; Real time clock ah=func 03h
; set clock cx=hrs/min, dh=sec
F000:D3F7 E8 0118 call sub_219 ; (D512)
F000:D3FA EB A2 jmp short loc_1131 ; (D39E)
F000:D3FC loc_1139: ; xref F000:D43B, D458
F000:D3FC BA 041B mov dx,41Bh
F000:D3FF B9 0004 mov cx,4
F000:D402 E8 0087 call sub_214 ; (D48C)
F000:D405 9C pushf ; Push flags
F000:D406 73 07 jnc short loc_1140 ; Jump if carry=0
F000:D408 74 05 jz short loc_1140 ; Jump if zero
F000:D40A 80 FC 01 cmp ah,1
F000:D40D 75 0B jne short loc_1141 ; Jump if not equal
F000:D40F loc_1140: ; xref F000:D406, D408
F000:D40F BA 041B mov dx,41Bh
F000:D412 B9 0004 mov cx,4
F000:D415 E8 0084 call sub_215 ; (D49C)
F000:D418 9D popf ; Pop flags
F000:D419 C3 retn
F000:D41A loc_1141: ; xref F000:D40D
F000:D41A 9D popf ; Pop flags
F000:D41B 80 FC 49 cmp ah,49h ; 'I'
F000:D41E 74 1D je short loc_1144 ; Jump if equal
F000:D420 E8 0284 call sub_222 ; (D6A7)
F000:D423 8A C1 mov al,cl
F000:D425 3C 59 cmp al,59h ; 'Y'
F000:D427 75 04 jne short loc_1142 ; Jump if not equal
F000:D429 B0 00 mov al,0
F000:D42B EB 05 jmp short loc_1143 ; (D432)
F000:D42D loc_1142: ; xref F000:D427
F000:D42D 0A C0 or al,al ; Zero ?
F000:D42F FE C0 inc al
F000:D431 27 daa ; Decimal adjust
F000:D432 loc_1143: ; xref F000:D42B
F000:D432 8A C8 mov cl,al
F000:D434 B4 03 mov ah,3
F000:D436 CD 1A int 1Ah ; Real time clock ah=func 03h
; set clock cx=hrs/min, dh=sec
F000:D438 E8 00D7 call sub_219 ; (D512)
F000:D43B EB BF jmp short loc_1139 ; (D3FC)
F000:D43D loc_1144: ; xref F000:D41E
F000:D43D E8 0267 call sub_222 ; (D6A7)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 240
F000:D440 8A C1 mov al,cl
F000:D442 3C 00 cmp al,0
F000:D444 75 04 jne short loc_1145 ; Jump if not equal
F000:D446 B0 59 mov al,59h ; 'Y'
F000:D448 EB 05 jmp short loc_1146 ; (D44F)
F000:D44A loc_1145: ; xref F000:D444
F000:D44A 0A C0 or al,al ; Zero ?
F000:D44C FE C8 dec al
F000:D44E 2F das ; Decimal adjust
F000:D44F loc_1146: ; xref F000:D448
F000:D44F 8A C8 mov cl,al
F000:D451 B4 03 mov ah,3
F000:D453 CD 1A int 1Ah ; Real time clock ah=func 03h
; set clock cx=hrs/min, dh=sec
F000:D455 E8 00BA call sub_219 ; (D512)
F000:D458 EB A2 jmp short loc_1139 ; (D3FC)
F000:D45A loc_1147: ; xref F000:D485
F000:D45A BA 0420 mov dx,420h
F000:D45D B9 0004 mov cx,4
F000:D460 E8 0029 call sub_214 ; (D48C)
F000:D463 9C pushf ; Push flags
F000:D464 73 07 jnc short loc_1148 ; Jump if carry=0
F000:D466 74 05 jz short loc_1148 ; Jump if zero
F000:D468 80 FC 01 cmp ah,1
F000:D46B 75 0B jne short loc_1149 ; Jump if not equal
F000:D46D loc_1148: ; xref F000:D464, D466
F000:D46D BA 0420 mov dx,420h
F000:D470 B9 0004 mov cx,4
F000:D473 E8 0026 call sub_215 ; (D49C)
F000:D476 9D popf ; Pop flags
F000:D477 C3 retn
F000:D478 loc_1149: ; xref F000:D46B
F000:D478 9D popf ; Pop flags
F000:D479 E8 022B call sub_222 ; (D6A7)
F000:D47C B6 00 mov dh,0
F000:D47E B4 03 mov ah,3
F000:D480 CD 1A int 1Ah ; Real time clock ah=func 03h
; set clock cx=hrs/min, dh=sec
F000:D482 E8 008D call sub_219 ; (D512)
F000:D485 EB D3 jmp short loc_1147 ; (D45A)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:D292, D2E8, D33E
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_213 proc near
F000:D487 BE DB65 mov si,0DB65h
F000:D48A EB 03 jmp short loc_1150 ; (D48F)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:D3A4, D402, D460
sub_214:
F000:D48C BE DBB8 mov si,0DBB8h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 241
F000:D48F loc_1150: ; xref F000:D48A
F000:D48F E8 EFF3 call sub_176 ; (C485)
F000:D492 BB 0070 mov bx,70h
F000:D495 E8 000A call sub_216 ; (D4A2)
F000:D498 E8 F21D call sub_183 ; (C6B8)
F000:D49B C3 retn
sub_213 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:D2A5, D2FB, D351, D3B7, D415, D473
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_215 proc near
F000:D49C E8 EFF1 call sub_177 ; (C490)
F000:D49F BB 0007 mov bx,7
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:D495
sub_216:
F000:D4A2 50 push ax
F000:D4A3 locloop_1151: ; xref F000:D4B6
F000:D4A3 B4 02 mov ah,2
F000:D4A5 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:D4A7 FE C2 inc dl
F000:D4A9 B4 08 mov ah,8
F000:D4AB CD 10 int 10h ; Video display ah=functn 08h
; get char al & attrib ah @curs
F000:D4AD 51 push cx
F000:D4AE B9 0001 mov cx,1
F000:D4B1 B4 09 mov ah,9
F000:D4B3 CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:D4B5 59 pop cx
F000:D4B6 E2 EB loop locloop_1151 ; Loop if cx > 0
F000:D4B8 58 pop ax
F000:D4B9 C3 retn
sub_215 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:D333
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_217 proc near
F000:D4BA 51 push cx
F000:D4BB B5 00 mov ch,0
F000:D4BD EB 03 jmp short loc_1152 ; (D4C2)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 242
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:D2C4, D2DD, D31A, D378, D399
sub_218:
F000:D4BF 51 push cx
F000:D4C0 B5 01 mov ch,1
F000:D4C2 loc_1152: ; xref F000:D4BD
F000:D4C2 80 FE 02 cmp dh,2
F000:D4C5 74 1B je short loc_1156 ; Jump if equal
F000:D4C7 80 FE 08 cmp dh,8
F000:D4CA 73 0B jae short loc_1154 ; Jump if above or =
F000:D4CC F6 C6 01 test dh,1
F000:D4CF 75 0B jnz short loc_1155 ; Jump if not zero
F000:D4D1 loc_1153: ; xref F000:D4DA
F000:D4D1 B0 30 mov al,30h ; '0'
F000:D4D3 3A D0 cmp dl,al
F000:D4D5 EB 29 jmp short loc_1158 ; (D500)
F000:D4D7 loc_1154: ; xref F000:D4CA
F000:D4D7 F6 C6 01 test dh,1
F000:D4DA 75 F5 jnz loc_1153 ; Jump if not zero
F000:D4DC loc_1155: ; xref F000:D4CF
F000:D4DC B0 31 mov al,31h ; '1'
F000:D4DE 3A D0 cmp dl,al
F000:D4E0 EB 1E jmp short loc_1158 ; (D500)
F000:D4E2 loc_1156: ; xref F000:D4C5
F000:D4E2 8A C1 mov al,cl
F000:D4E4 C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:D4E7 B4 0A mov ah,0Ah
F000:D4E9 F6 E4 mul ah ; ax = reg * al
F000:D4EB 8A E1 mov ah,cl
F000:D4ED 80 E4 0F and ah,0Fh
F000:D4F0 02 C4 add al,ah
F000:D4F2 A8 03 test al,3
F000:D4F4 74 06 jz short loc_1157 ; Jump if zero
F000:D4F6 B0 28 mov al,28h ; '('
F000:D4F8 3A D0 cmp dl,al
F000:D4FA EB 04 jmp short loc_1158 ; (D500)
F000:D4FC loc_1157: ; xref F000:D4F4
F000:D4FC B0 29 mov al,29h ; ')'
F000:D4FE 3A D0 cmp dl,al
F000:D500 loc_1158: ; xref F000:D4D5, D4E0, D4FA
F000:D500 76 08 jbe short loc_1160 ; Jump if below or =
F000:D502 0A ED or ch,ch ; Zero ?
F000:D504 74 02 jz short loc_1159 ; Jump if zero
F000:D506 B0 01 mov al,1
F000:D508 loc_1159: ; xref F000:D504
F000:D508 8A D0 mov dl,al
F000:D50A loc_1160: ; xref F000:D500
F000:D50A 59 pop cx
F000:D50B B4 05 mov ah,5
F000:D50D CD 1A int 1Ah ; Real time clock ah=func 05h
; set date cx=year, dx=mon/day
F000:D50F EB 01 jmp short loc_1161 ; (D512)
F000:D511 90 db 90h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 243
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:D3DA, D3F7, D438, D455, D482
sub_219:
F000:D512 loc_1161: ; xref F000:D50F
F000:D512 55 push bp
F000:D513 83 EC 0A sub sp,0Ah
F000:D516 8B EC mov bp,sp
F000:D518 B4 03 mov ah,3
F000:D51A B7 00 mov bh,0
F000:D51C CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:D51E 52 push dx
F000:D51F 51 push cx
F000:D520 80 E5 9F and ch,9Fh
F000:D523 80 CD 20 or ch,20h ; ' '
F000:D526 B4 01 mov ah,1
F000:D528 CD 10 int 10h ; Video display ah=functn 01h
; set cursor mode in cx
F000:D52A E8 0140 call sub_221 ; (D66D)
F000:D52D 89 4E 00 mov [bp],cx
F000:D530 89 56 02 mov [bp+2],dx
F000:D533 8B 46 00 mov ax,[bp]
F000:D536 E8 027E call sub_232 ; (D7B7)
F000:D539 89 46 04 mov [bp+4],ax
F000:D53C 2D 0769 sub ax,769h
F000:D53F 50 push ax
F000:D540 C1 E8 02 shr ax,2 ; Shift w/zeros fill
F000:D543 B9 0007 mov cx,7
F000:D546 99 cwd ; Word to double word
F000:D547 F7 F1 div cx ; ax,dx rem=dx:ax/reg
F000:D549 8B DA mov bx,dx
F000:D54B 2E: 8A 9F D09A mov bl,cs:data_132[bx] ; (F000:D09A=4)
F000:D550 58 pop ax
F000:D551 24 03 and al,3
F000:D553 02 D8 add bl,al
F000:D555 80 FB 06 cmp bl,6
F000:D558 76 03 jbe short loc_1162 ; Jump if below or =
F000:D55A 80 EB 07 sub bl,7
F000:D55D loc_1162: ; xref F000:D558
F000:D55D 8A 46 02 mov al,[bp+2]
F000:D560 98 cbw ; Convrt byte to word
F000:D561 E8 0253 call sub_232 ; (D7B7)
F000:D564 88 46 06 mov [bp+6],al
F000:D567 48 dec ax
F000:D568 50 push ax
F000:D569 8A 46 03 mov al,[bp+3]
F000:D56C 98 cbw ; Convrt byte to word
F000:D56D E8 0247 call sub_232 ; (D7B7)
F000:D570 88 46 07 mov [bp+7],al
F000:D573 48 dec ax
F000:D574 59 pop cx
F000:D575 3C 01 cmp al,1
F000:D577 76 07 jbe short loc_1163 ; Jump if below or =
F000:D579 F6 46 04 03 test byte ptr [bp+4],3
F000:D57D 75 01 jnz short loc_1163 ; Jump if not zero
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 244
F000:D57F 41 inc cx
F000:D580 loc_1163: ; xref F000:D577, D57D
F000:D580 86 D8 xchg bl,al
F000:D582 32 FF xor bh,bh ; Zero register
F000:D584 2E: 8A 9F D0A1 mov bl,cs:data_133[bx] ; (F000:D0A1=0)
F000:D589 02 C3 add al,bl
F000:D58B 3C 06 cmp al,6
F000:D58D 76 02 jbe short loc_1164 ; Jump if below or =
F000:D58F 2C 07 sub al,7
F000:D591 loc_1164: ; xref F000:D58D
F000:D591 86 C1 xchg al,cl
F000:D593 B2 07 mov dl,7
F000:D595 F6 F2 div dl ; al, ah rem = ax/reg
F000:D597 8A C4 mov al,ah
F000:D599 02 C1 add al,cl
F000:D59B 3C 06 cmp al,6
F000:D59D 76 02 jbe short loc_1165 ; Jump if below or =
F000:D59F 2C 07 sub al,7
F000:D5A1 loc_1165: ; xref F000:D59D
F000:D5A1 88 46 08 mov [bp+8],al
F000:D5A4 BA 0317 mov dx,317h
F000:D5A7 8A 46 08 mov al,[bp+8]
F000:D5AA BE DE9B mov si,0DE9Bh
F000:D5AD E8 01BB call sub_228 ; (D76B)
F000:D5B0 B8 0E2C mov ax,0E2Ch
F000:D5B3 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:D5B5 BA 031C mov dx,31Ch
F000:D5B8 8A 46 07 mov al,[bp+7]
F000:D5BB 48 dec ax
F000:D5BC BE DEB7 mov si,0DEB7h
F000:D5BF E8 01A9 call sub_228 ; (D76B)
F000:D5C2 BA 0320 mov dx,320h
F000:D5C5 8A 46 02 mov al,[bp+2]
F000:D5C8 E8 01BA call sub_229 ; (D785)
F000:D5CB BA 0323 mov dx,323h
F000:D5CE 8A 46 01 mov al,[bp+1]
F000:D5D1 E8 01B1 call sub_229 ; (D785)
F000:D5D4 BA 0325 mov dx,325h
F000:D5D7 8A 46 00 mov al,[bp]
F000:D5DA E8 01A8 call sub_229 ; (D785)
F000:D5DD 8A 46 07 mov al,[bp+7]
F000:D5E0 BF 0020 mov di,20h
F000:D5E3 FE C8 dec al
F000:D5E5 74 03 jz short loc_1166 ; Jump if zero
F000:D5E7 E8 00E7 call sub_223 ; (D6D1)
F000:D5EA loc_1166: ; xref F000:D5E5
F000:D5EA 8A 46 06 mov al,[bp+6]
F000:D5ED FE C8 dec al
F000:D5EF 98 cbw ; Convrt byte to word
F000:D5F0 B1 07 mov cl,7
F000:D5F2 F6 F1 div cl ; al, ah rem = ax/reg
F000:D5F4 8A 46 08 mov al,[bp+8]
F000:D5F7 2A C4 sub al,ah
F000:D5F9 79 02 jns short loc_1167 ; Jump if not sign
F000:D5FB 04 07 add al,7
F000:D5FD loc_1167: ; xref F000:D5F9
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 245
F000:D5FD 32 E4 xor ah,ah ; Zero register
F000:D5FF 8B F7 mov si,di
F000:D601 2B F0 sub si,ax
F000:D603 BA 0D34 mov dx,0D34h
F000:D606 BB 0007 mov bx,7
F000:D609 B4 02 mov ah,2
F000:D60B CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:D60D E8 00EE call sub_224 ; (D6FE)
F000:D610 8A 46 07 mov al,[bp+7]
F000:D613 E8 00BB call sub_223 ; (D6D1)
F000:D616 BE 0001 mov si,1
F000:D619 B3 0F mov bl,0Fh
F000:D61B E8 00E0 call sub_224 ; (D6FE)
F000:D61E BE 0001 mov si,1
F000:D621 BF 000F mov di,0Fh
F000:D624 B3 07 mov bl,7
F000:D626 E8 00D5 call sub_224 ; (D6FE)
F000:D629 E8 007B call sub_222 ; (D6A7)
F000:D62C 52 push dx
F000:D62D 51 push cx
F000:D62E 8A C5 mov al,ch
F000:D630 BA 0417 mov dx,417h
F000:D633 E8 014F call sub_229 ; (D785)
F000:D636 E8 0024 call sub_220 ; (D65D)
F000:D639 58 pop ax
F000:D63A BA 041C mov dx,41Ch
F000:D63D E8 0145 call sub_229 ; (D785)
F000:D640 E8 001A call sub_220 ; (D65D)
F000:D643 58 pop ax
F000:D644 8A C4 mov al,ah
F000:D646 BA 0421 mov dx,421h
F000:D649 E8 0139 call sub_229 ; (D785)
F000:D64C 59 pop cx
F000:D64D 5A pop dx
F000:D64E B7 00 mov bh,0
F000:D650 B4 02 mov ah,2
F000:D652 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:D654 B4 01 mov ah,1
F000:D656 CD 10 int 10h ; Video display ah=functn 01h
; set cursor mode in cx
F000:D658 83 C4 0A add sp,0Ah
F000:D65B 5D pop bp
F000:D65C C3 retn
sub_217 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:D636, D640
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_220 proc near
F000:D65D B8 0E20 mov ax,0E20h
F000:D660 CD 10 int 10h ; Video display ah=functn 0Eh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 246
; write char al, teletype mode
F000:D662 B8 0E3A mov ax,0E3Ah
F000:D665 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:D667 B8 0E20 mov ax,0E20h
F000:D66A CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:D66C C3 retn
sub_220 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:BE33, D2B0, D2C9, D306, D31F, D35C, D37D
; D52A
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_221 proc near
F000:D66D B4 04 mov ah,4
F000:D66F CD 1A int 1Ah ; Real time clock ah=func 04h
; read date cx=year, dx=mon/day
F000:D671 73 04 jnc short loc_1168 ; Jump if carry=0
F000:D673 B4 04 mov ah,4
F000:D675 CD 1A int 1Ah ; Real time clock ah=func 04h
; read date cx=year, dx=mon/day
F000:D677 loc_1168: ; xref F000:D671
F000:D677 8B C1 mov ax,cx
F000:D679 E8 0120 call sub_231 ; (D79C)
F000:D67C 73 22 jnc short loc_1169 ; Jump if carry=0
F000:D67E 3D 1901 cmp ax,1901h
F000:D681 72 1D jb short loc_1169 ; Jump if below
F000:D683 3D 2099 cmp ax,2099h
F000:D686 77 18 ja short loc_1169 ; Jump if above
F000:D688 8B C2 mov ax,dx
F000:D68A E8 010F call sub_231 ; (D79C)
F000:D68D 73 11 jnc short loc_1169 ; Jump if carry=0
F000:D68F 0A C0 or al,al ; Zero ?
F000:D691 74 0D jz short loc_1169 ; Jump if zero
F000:D693 0A E4 or ah,ah ; Zero ?
F000:D695 74 09 jz short loc_1169 ; Jump if zero
F000:D697 80 FC 12 cmp ah,12h
F000:D69A 77 04 ja short loc_1169 ; Jump if above
F000:D69C 3C 31 cmp al,31h ; '1'
F000:D69E 76 06 jbe short loc_ret_1170 ; Jump if below or =
F000:D6A0 loc_1169: ; xref F000:D67C, D681, D686, D68D
; D691, D695, D69A
F000:D6A0 B9 1980 mov cx,1980h
F000:D6A3 BA 0101 mov dx,101h
F000:D6A6 loc_ret_1170: ; xref F000:D69E
F000:D6A6 C3 retn
sub_221 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 247
;
; Called from: F000:BE3A, D3C2, D3DF, D420, D43D, D479, D629
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_222 proc near
F000:D6A7 B4 02 mov ah,2
F000:D6A9 CD 1A int 1Ah ; Real time clock ah=func 02h
; read clock cx=hrs/min, dh=sec
F000:D6AB 73 04 jnc short loc_1171 ; Jump if carry=0
F000:D6AD B4 02 mov ah,2
F000:D6AF CD 1A int 1Ah ; Real time clock ah=func 02h
; read clock cx=hrs/min, dh=sec
F000:D6B1 loc_1171: ; xref F000:D6AB
F000:D6B1 8B C1 mov ax,cx
F000:D6B3 E8 00E6 call sub_231 ; (D79C)
F000:D6B6 73 14 jnc short loc_1172 ; Jump if carry=0
F000:D6B8 80 FC 23 cmp ah,23h ; '#'
F000:D6BB 77 0F ja short loc_1172 ; Jump if above
F000:D6BD 3C 59 cmp al,59h ; 'Y'
F000:D6BF 77 0B ja short loc_1172 ; Jump if above
F000:D6C1 8A C6 mov al,dh
F000:D6C3 E8 00D6 call sub_231 ; (D79C)
F000:D6C6 73 04 jnc short loc_1172 ; Jump if carry=0
F000:D6C8 3C 59 cmp al,59h ; 'Y'
F000:D6CA 76 04 jbe short loc_ret_1173 ; Jump if below or =
F000:D6CC loc_1172: ; xref F000:D6B6, D6BB, D6BF, D6C6
F000:D6CC 33 C9 xor cx,cx ; Zero register
F000:D6CE 33 D2 xor dx,dx ; Zero register
F000:D6D0 loc_ret_1173: ; xref F000:D6CA
F000:D6D0 C3 retn
sub_222 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:D5E7, D613
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_223 proc near
F000:D6D1 3C 02 cmp al,2
F000:D6D3 75 0C jne short loc_1174 ; Jump if not equal
F000:D6D5 B4 1C mov ah,1Ch
F000:D6D7 F6 46 04 03 test byte ptr [bp+4],3
F000:D6DB 75 18 jnz short loc_1176 ; Jump if not zero
F000:D6DD FE C4 inc ah
F000:D6DF EB 14 jmp short loc_1176 ; (D6F5)
F000:D6E1 loc_1174: ; xref F000:D6D3
F000:D6E1 B4 1F mov ah,1Fh
F000:D6E3 3C 08 cmp al,8
F000:D6E5 73 08 jae short loc_1175 ; Jump if above or =
F000:D6E7 A8 01 test al,1
F000:D6E9 75 0A jnz short loc_1176 ; Jump if not zero
F000:D6EB FE CC dec ah
F000:D6ED EB 06 jmp short loc_1176 ; (D6F5)
F000:D6EF loc_1175: ; xref F000:D6E5
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 248
F000:D6EF A8 01 test al,1
F000:D6F1 74 02 jz short loc_1176 ; Jump if zero
F000:D6F3 FE CC dec ah
F000:D6F5 loc_1176: ; xref F000:D6DB, D6DF, D6E9, D6ED
; D6F1
F000:D6F5 FE C4 inc ah
F000:D6F7 32 C0 xor al,al ; Zero register
F000:D6F9 86 C4 xchg al,ah
F000:D6FB 8B F8 mov di,ax
F000:D6FD C3 retn
sub_223 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:D60D, D61B, D626
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_224 proc near
F000:D6FE loc_1177: ; xref F000:D732
F000:D6FE 3B F7 cmp si,di
F000:D700 74 37 je short loc_ret_1182 ; Jump if equal
F000:D702 8B C6 mov ax,si
F000:D704 3A 46 06 cmp al,[bp+6]
F000:D707 75 0E jne short loc_1178 ; Jump if not equal
F000:D709 80 FB 0F cmp bl,0Fh
F000:D70C 75 09 jne short loc_1178 ; Jump if not equal
F000:D70E 53 push bx
F000:D70F B3 8F mov bl,8Fh
F000:D711 E8 0026 call sub_225 ; (D73A)
F000:D714 5B pop bx
F000:D715 EB 03 jmp short loc_1179 ; (D71A)
F000:D717 loc_1178: ; xref F000:D707, D70C
F000:D717 E8 0020 call sub_225 ; (D73A)
F000:D71A loc_1179: ; xref F000:D715
F000:D71A 46 inc si
F000:D71B B4 03 mov ah,3
F000:D71D CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:D71F 80 FA 4E cmp dl,4Eh ; 'N'
F000:D722 75 10 jne short loc_1181 ; Jump if not equal
F000:D724 80 C6 02 add dh,2
F000:D727 80 FE 19 cmp dh,19h
F000:D72A 74 0D je short loc_ret_1182 ; Jump if equal
F000:D72C B2 34 mov dl,34h ; '4'
F000:D72E loc_1180: ; xref F000:D737
F000:D72E B4 02 mov ah,2
F000:D730 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:D732 EB CA jmp short loc_1177 ; (D6FE)
F000:D734 loc_1181: ; xref F000:D722
F000:D734 80 C2 02 add dl,2
F000:D737 EB F5 jmp short loc_1180 ; (D72E)
F000:D739 loc_ret_1182: ; xref F000:D700, D72A
F000:D739 C3 retn
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 249
sub_224 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:D711, D717
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_225 proc near
F000:D73A 3C 09 cmp al,9
F000:D73C 77 07 ja short loc_1183 ; Jump if above
F000:D73E 50 push ax
F000:D73F B0 20 mov al,20h ; ' '
F000:D741 E8 0015 call sub_227 ; (D759)
F000:D744 58 pop ax
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:D751
sub_226:
F000:D745 loc_1183: ; xref F000:D73C
F000:D745 98 cbw ; Convrt byte to word
F000:D746 99 cwd ; Word to double word
F000:D747 B9 000A mov cx,0Ah
F000:D74A F7 F1 div cx ; ax,dx rem=dx:ax/reg
F000:D74C 0B C0 or ax,ax ; Zero ?
F000:D74E 74 05 jz short loc_1184 ; Jump if zero
F000:D750 52 push dx
F000:D751 E8 FFF1 call sub_226 ; (D745)
F000:D754 5A pop dx
F000:D755 loc_1184: ; xref F000:D74E
F000:D755 8A C2 mov al,dl
F000:D757 0C 30 or al,30h ; '0'
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:D741
sub_227:
F000:D759 B4 09 mov ah,9
F000:D75B B9 0001 mov cx,1
F000:D75E CD 10 int 10h ; Video display ah=functn 09h
; set char al & attrib bl @curs
F000:D760 B4 03 mov ah,3
F000:D762 CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:D764 FE C2 inc dl
F000:D766 B4 02 mov ah,2
F000:D768 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:D76A C3 retn
sub_225 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 250
; SUBROUTINE
;
; Called from: F000:D5AD, D5BF
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_228 proc near
F000:D76B 50 push ax
F000:D76C B4 02 mov ah,2
F000:D76E CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:D770 58 pop ax
F000:D771 B4 04 mov ah,4
F000:D773 F6 E4 mul ah ; ax = reg * al
F000:D775 03 F0 add si,ax
F000:D777 B9 0003 mov cx,3
F000:D77A locloop_1185: ; xref F000:D782
F000:D77A 2E: 8A 04 mov al,cs:[si]
F000:D77D 46 inc si
F000:D77E B4 0E mov ah,0Eh
F000:D780 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:D782 E2 F6 loop locloop_1185 ; Loop if cx > 0
F000:D784 C3 retn
sub_228 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:D5C8, D5D1, D5DA, D633, D63D, D649
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_229 proc near
F000:D785 50 push ax
F000:D786 B4 02 mov ah,2
F000:D788 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:D78A 58 pop ax
F000:D78B 50 push ax
F000:D78C C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:D78F E8 0001 call sub_230 ; (D793)
F000:D792 58 pop ax
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:D78F
sub_230:
F000:D793 25 000F and ax,0Fh
F000:D796 0D 0E30 or ax,0E30h
F000:D799 CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:D79B C3 retn
sub_229 endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 251
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:D679, D68A, D6B3, D6C3
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_231 proc near
F000:D79C 50 push ax
F000:D79D 25 0F0F and ax,0F0Fh
F000:D7A0 3C 0A cmp al,0Ah
F000:D7A2 73 11 jae short loc_1186 ; Jump if above or =
F000:D7A4 80 FC 0A cmp ah,0Ah
F000:D7A7 73 0C jae short loc_1186 ; Jump if above or =
F000:D7A9 58 pop ax
F000:D7AA 50 push ax
F000:D7AB 25 F0F0 and ax,0F0F0h
F000:D7AE 3C A0 cmp al,0A0h
F000:D7B0 73 03 jae short loc_1186 ; Jump if above or =
F000:D7B2 80 FC A0 cmp ah,0A0h
F000:D7B5 loc_1186: ; xref F000:D7A2, D7A7, D7B0
F000:D7B5 58 pop ax
F000:D7B6 C3 retn
sub_231 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:D536, D561, D56D
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_232 proc near
F000:D7B7 50 push ax
F000:D7B8 B9 0064 mov cx,64h
F000:D7BB 8A C4 mov al,ah
F000:D7BD C0 EC 04 shr ah,4 ; Shift w/zeros fill
F000:D7C0 24 0F and al,0Fh
F000:D7C2 D5 0A aad ; Ascii adjust
F000:D7C4 F7 E1 mul cx ; dx:ax = reg * ax
F000:D7C6 8B D0 mov dx,ax
F000:D7C8 58 pop ax
F000:D7C9 8A E0 mov ah,al
F000:D7CB C0 EC 04 shr ah,4 ; Shift w/zeros fill
F000:D7CE 24 0F and al,0Fh
F000:D7D0 D5 0A aad ; Ascii adjust
F000:D7D2 03 C2 add ax,dx
F000:D7D4 C3 retn
sub_232 endp
F000:D7D5 00 db 0
F000:D7D6 52 4F 4D 2D 42 49 db 'ROM-BIOS CHECKSUM ERROR', 0Dh, 0Ah
F000:D7DC 4F 53 20 43 48 45
F000:D7E2 43 4B 53 55 4D 20
F000:D7E8 45 52 52 4F 52 0D
F000:D7EE 0A
F000:D7EF 43 48 45 43 4B 20 db 'CHECK ROM (27256)?'
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 252
F000:D7F5 52 4F 4D 20 28 32
F000:D7FB 37 32 35 36 29 3F
F000:D801 00 db 0
F000:D802 0D 0A 53 59 53 54 db 0Dh, 0Ah, 'SYSTEM HALTED'
F000:D808 45 4D 20 48 41 4C
F000:D80E 54 45 44
F000:D811 00 0D 1E db 0, 0Dh, 1Eh
F000:D814 20 52 55 4E 20 58 db ' RUN XCMOS SETUP '
F000:D81A 43 4D 4F 53 20 53
F000:D820 45 54 55 50 20
F000:D825 00 02 0C 1E db 0, 2, 0Ch, 1Eh
F000:D829 20 52 55 4E 20 43 db ' RUN CMOS SETUP '
F000:D82F 4D 4F 53 20 53 45
F000:D835 54 55 50 20
F000:D839 00 01 0B 1E db 0, 1, 0Bh, 1Eh
F000:D83D 20 45 58 49 54 20 db ' EXIT FOR BOOT '
F000:D843 46 4F 52 20 42 4F
F000:D849 4F 54 20
F000:D84C 00 00 01 01 db 0, 0, 1, 1
F000:D850 20 20 20 20 20 20 db ' CMOS SETUP (C) Copyrigh'
F000:D856 20 20 20 43 4D 4F
F000:D85C 53 20 53 45 54 55
F000:D862 50 20 28 43 29 20
F000:D868 43 6F 70 79 72 69
F000:D86E 67 68
F000:D870 74 20 31 39 38 35 db 't 1985-1990, American Megatrends'
F000:D876 2D 31 39 39 30 2C
F000:D87C 20 41 6D 65 72 69
F000:D882 63 61 6E 20 4D 65
F000:D888 67 61 74 72 65 6E
F000:D88E 64 73
F000:D890 20 49 6E 63 2E 2C db ' Inc.,', 0Dh, 0Ah, 0Ah, ' Date ('
F000:D896 0D 0A 0A 20 44 61
F000:D89C 74 65 20 28
F000:D8A0 6D 6E 2F 64 61 74 db 'mn/date/year): '
F000:D8A6 65 2F 79 65 61 72
F000:D8AC 29 3A 20 20 20 20
F000:D8B2 20 20 20 20 20 20
F000:D8B8 20 20 20 20 20 20
F000:D8BE 20 20
F000:D8C0 BA db 0BAh
F000:D8C1 20 42 61 73 65 20 db ' Base memory size :', 0Dh, 0Ah, ' '
F000:D8C7 6D 65 6D 6F 72 79
F000:D8CD 20 73 69 7A 65 20
F000:D8D3 20 3A 0D 0A 20
F000:D8D8 54 69 6D 65 20 28 db 'Time (hour/min/sec): '
F000:D8DE 68 6F 75 72 2F 6D
F000:D8E4 69 6E 2F 73 65 63
F000:D8EA 29 3A 20 20 20 20
F000:D8F0 20 20 20 20 20 20
F000:D8F6 20 20
F000:D8F8 20 20 20 20 20 20 db ' '
F000:D8FE BA db 0BAh
F000:D8FF 20 45 78 74 2E 20 db ' Ext. memory size :', 0Dh, 0Ah, ' '
F000:D905 6D 65 6D 6F 72 79
F000:D90B 20 73 69 7A 65 20
F000:D911 20 3A 0D 0A 20
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 253
F000:D916 46 6C 6F 70 70 79 db 'Floppy drive A: : '
F000:D91C 20 64 72 69 76 65
F000:D922 20 41 3A 20 20 20
F000:D928 20 3A 20 20 20 20
F000:D92E 20 20 20 20 20 20
F000:D934 20 20
F000:D936 20 20 20 20 20 20 db ' '
F000:D93C BA db 0BAh
F000:D93D 20 4E 75 6D 65 72 db ' Numeric processor :', 0Dh, 0Ah, ' '
F000:D943 69 63 20 70 72 6F
F000:D949 63 65 73 73 6F 72
F000:D94F 20 3A 0D 0A 20
F000:D954 46 6C 6F 70 70 79 db 'Floppy drive B: :', 0Dh, 0Ah, 0Ah
F000:D95A 20 64 72 69 76 65
F000:D960 20 42 3A 20 20 20
F000:D966 20 3A 0D 0A 0A
F000:D96B 20 48 61 72 64 20 db ' Hard disk C: type :', 0Dh, 0Ah
F000:D971 64 69 73 6B 20 43
F000:D977 3A 20 74 79 70 65
F000:D97D 20 20 3A 0D 0A
F000:D982 20 48 61 72 64 20 db ' Hard disk D: type :', 0Dh, 0Ah
F000:D988 64 69 73 6B 20 44
F000:D98E 3A 20 74 79 70 65
F000:D994 20 20 3A 0D 0A
F000:D999 20 50 72 69 6D 61 db ' Primary display :', 0Dh, 0Ah
F000:D99F 72 79 20 64 69 73
F000:D9A5 70 6C 61 79 20 20
F000:D9AB 20 20 3A 0D 0A
F000:D9B0 20 4B 65 79 62 6F db ' Keyboard '
F000:D9B6 61 72 64 20
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:F2AD
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_233 proc near
F000:D9BA 20 20 and [bx+si],ah
F000:D9BC 20 20 and [bx+si],ah
F000:D9BE 20 20 and [bx+si],ah
F000:D9C0 20 20 and [bx+si],ah
F000:D9C2 20 20 and [bx+si],ah
F000:D9C4 3A 0D cmp cl,[di]
F000:D9C6 0A 20 or ah,[bx+si]
F000:D9C8 56 push si
F000:D9C9 69 64 65 206F imul sp,word ptr [si+65h],206Fh ; reg = data * value
F000:D9CE 42 inc dx
F000:D9CF 49 dec cx
F000:D9D0 4F dec di
F000:D9D1 53 push bx
F000:D9D2 20 73 68 and [bp+di+68h],dh
F000:D9D5 61 popa ; Restore all regs
F000:D9D6 64: 6F outs dx,word ptr fs:[si] ; Out [si] to port dx
F000:D9D8 77 20 ;* ja short loc_1187 ;*Jump if above
F000:D9D8 77 20 db 77h, 20h
F000:D9DA 20 3A and [bp+si],bh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 254
F000:D9DC 0D 200A or ax,200Ah
F000:D9DF 53 push bx
F000:D9E0 63 72 61 arpl word ptr [bp+si+61h],si ; Adjust req priv lev
F000:D9E3 74 63 jz short loc_1189 ; Jump if zero
F000:D9E5 68 5220 push 5220h
F000:D9E8 41 inc cx
F000:D9E9 4D dec bp
F000:D9EA 20 6F 70 and [bx+70h],ch
F000:D9ED 74 69 jz short loc_1190 ; Jump if zero
F000:D9EF 6F outsw ; Out [si] to port dx
F000:D9F0 6E outsb ; Out [si] to port dx
F000:D9F1 20 3A and [bp+si],bh
F000:D9F3 0D 200A or ax,200Ah
F000:D9F6 4D dec bp
F000:D9F7 61 popa ; Restore all regs
F000:D9F8 69 6E 20 4942 imul bp,word ptr [bp+20h],4942h ; reg = data * value
F000:D9FD 4F dec di
F000:D9FE 53 push bx
F000:D9FF 20 73 68 and [bp+di+68h],dh
F000:DA02 61 popa ; Restore all regs
F000:DA03 64: 6F outs dx,word ptr fs:[si] ; Out [si] to port dx
F000:DA05 77 20 ;* ja short loc_1188 ;*Jump if above
F000:DA05 77 20 db 77h, 20h
F000:DA07 20 20 and [bx+si],ah
F000:DA09 3A 0D cmp cl,[di]
F000:DA0B 0A 0A or cl,[bp+si]
F000:DA0D 0A 0A or cl,[bp+si]
F000:DA0F 0A 0A or cl,[bp+si]
F000:DA11 0A 0A or cl,[bp+si]
F000:DA13 0A 20 or ah,[bx+si]
F000:DA15 45 inc bp
F000:DA16 53 push bx
F000:DA17 43 inc bx
F000:DA18 20 3D and [di],bh
F000:DA1A 20 45 78 and [di+78h],al
F000:DA1D 69 74 2C 1920 imul si,word ptr [si+2Ch],1920h ; reg = data * value
F000:DA22 20 1A and [bp+si],bl
F000:DA24 20 18 and [bx+si],bl
F000:DA26 20 1B and [bp+di],bl
F000:DA28 20 3D and [di],bh
F000:DA2A 20 53 65 and [bp+di+65h],dl
F000:DA2D 6C insb ; Port dx to es:[di]
F000:DA2E 65: 63 74 2C arpl word ptr gs:[si+2Ch],si ; Adjust req priv lev
F000:DA32 20 50 67 and [bx+si+67h],dl
F000:DA35 55 push bp
F000:DA36 70 2F jo short loc_1191 ; Jump if overflow=1
F000:DA38 50 push ax
F000:DA39 67 44 6E 20 3D 20 db 'gDn = Modify'
F000:DA3F 4D 6F 64 69 66 79
F000:DA45 00 20 43 db 0, 20h, 43h
F000:DA48 loc_1189: ; xref F000:D9E3
F000:DA48 79 6C jns short loc_1192 ; Jump if not sign
F000:DA4A 6E outsb ; Out [si] to port dx
F000:DA4B 20 20 and [bx+si],ah
F000:DA4D 48 dec ax
F000:DA4E 65 61 64 20 20 57 db 'ead WPcom'
F000:DA54 50 63 6F 6D
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 255
F000:DA58 loc_1190: ; xref F000:D9ED
F000:DA58 20 4C 5A and [si+5Ah],cl
F000:DA5B 6F outsw ; Out [si] to port dx
F000:DA5C 6E outsb ; Out [si] to port dx
F000:DA5D 65: 20 53 65 and gs:[bp+di+65h],dl
F000:DA61 63 74 20 arpl word ptr [si+20h],si ; Adjust req priv lev
F000:DA64 20 53 69 and [bp+di+69h],dl
F000:DA67 loc_1191: ; xref F000:DA36
F000:DA67 7A 65 jp short loc_1193 ; Jump if parity=1
F000:DA69 20 20 and [bx+si],ah
F000:DA6B 20 20 and [bx+si],ah
F000:DA6D 00 20 add [bx+si],ah
F000:DA6F 49 dec cx
F000:DA70 6E outsb ; Out [si] to port dx
F000:DA71 73 74 jnc short loc_1194 ; Jump if carry=0
F000:DA73 61 popa ; Restore all regs
F000:DA74 6C insb ; Port dx to es:[di]
F000:DA75 6C insb ; Port dx to es:[di]
F000:DA76 65 64 20 20 20 20 db 65h, 64h, 20h, 20h, 20h, 20h
F000:DA7C 20 00 01 db 20h, 0, 1
F000:DA7F 20 4E 6F 74 20 49 db ' Not Installed '
F000:DA85 6E 73 74 61 6C 6C
F000:DA8B 65 64 20
F000:DA8E 00 00 db 0, 0
F000:DA90 20 45 6E 61 62 6C db ' Enabled '
F000:DA96 65 64 20 20
F000:DA9A 00 01 db 0, 1
F000:DA9C 20 44 69 73 61 62 db ' Disabled '
F000:DAA2 6C 65 64 20
F000:DAA6 00 00 20 57 65 69 db 0, 0, 20h, 57h, 65h, 69h
F000:DAAC 74 65 6B 00 db 74h, 65h, 6Bh, 0
F000:DAB0 20 49 6E 73 74 61 db 20h, 49h, 6Eh, 73h, 74h, 61h
F000:DAB6 loc_1192: ; xref F000:DA48
F000:DAB6 6C insb ; Port dx to es:[di]
F000:DAB7 6C insb ; Port dx to es:[di]
F000:DAB8 65 64 2C 57 65 69 db 'ed,Weitek'
F000:DABE 74 65 6B
F000:DAC1 00 20 32 20 00 01 db 0, 20h, 32h, 20h, 0, 1
F000:DAC7 20 31 20 00 00 db 20h, 31h, 20h, 0, 0
F000:DACC 20 33 db 20h, 33h
F000:DACE loc_1193: ; xref F000:DA67
F000:DACE 36: 30 20 xor ss:[bx+si],ah
F000:DAD1 20 4B 42 and [bp+di+42h],cl
F000:DAD4 2C 20 sub al,20h ; ' '
F000:DAD6 35 22AC xor ax,22ACh
F000:DAD9 20 20 and [bx+si],ah
F000:DADB 00 01 add [bx+di],al
F000:DADD 20 31 and [bx+di],dh
F000:DADF 2E: 32 20 xor ah,cs:[bx+si]
F000:DAE2 20 4D 42 and [di+42h],cl
F000:DAE5 2C 20 sub al,20h ; ' '
F000:DAE7 loc_1194: ; xref F000:DA71
F000:DAE7 35 22AC xor ax,22ACh
F000:DAEA 20 20 and [bx+si],ah
F000:DAEC 00 02 add [bp+si],al
F000:DAEE 20 37 and [bx],dh
F000:DAF0 32 30 xor dh,[bx+si]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 256
F000:DAF2 20 20 and [bx+si],ah
F000:DAF4 4B dec bx
F000:DAF5 42 inc dx
F000:DAF6 2C 20 sub al,20h ; ' '
F000:DAF8 33 AB 2022 xor bp,[bp+di+2022h]
F000:DAFC 20 00 and [bx+si],al
F000:DAFE 03 20 add sp,[bx+si]
F000:DB00 31 2E 3434 xor ds:data_27e,bp ; (02F8:3434=1703h)
F000:DB04 20 4D 42 and [di+42h],cl
F000:DB07 2C 20 sub al,20h ; ' '
F000:DB09 33 AB 2022 xor bp,[bp+di+2022h]
F000:DB0D 20 00 and [bx+si],al
F000:DB0F 04 20 add al,20h ; ' '
F000:DB11 4D dec bp
F000:DB12 6F outsw ; Out [si] to port dx
F000:DB13 6E outsb ; Out [si] to port dx
F000:DB14 6F outsw ; Out [si] to port dx
F000:DB15 63 68 72 arpl word ptr [bx+si+72h],bp ; Adjust req priv lev
F000:DB18 6F outsw ; Out [si] to port dx
F000:DB19 6D insw ; Port dx to es:[di]
F000:DB1A 65: 20 20 and gs:[bx+si],ah
F000:DB1D 20 20 and [bx+si],ah
F000:DB1F 00 31 add [bx+di],dh
F000:DB21 20 43 6F and [bp+di+6Fh],al
F000:DB24 6C insb ; Port dx to es:[di]
F000:DB25 6F outsw ; Out [si] to port dx
F000:DB26 72 20 jc short $+22h ; Jump if carry Set
F000:DB28 38 30 cmp [bx+si],dh
F000:DB2A 78 32 js short $+34h ; Jump if sign=1
F000:DB2C 35 2020 xor ax,2020h
F000:DB2F 20 00 and [bx+si],al
F000:DB31 21 20 and [bx+si],sp
F000:DB33 43 inc bx
F000:DB34 6F outsw ; Out [si] to port dx
F000:DB35 6C insb ; Port dx to es:[di]
F000:DB36 6F outsw ; Out [si] to port dx
F000:DB37 72 20 jc short $+22h ; Jump if carry Set
F000:DB39 34 30 xor al,30h ; '0'
F000:DB3B 78 32 js short $+34h ; Jump if sign=1
F000:DB3D 35 2020 xor ax,2020h
F000:DB40 20 00 and [bx+si],al
F000:DB42 11 20 adc [bx+si],sp
F000:DB44 56 push si
F000:DB45 47 inc di
F000:DB46 41 inc cx
F000:DB47 20 6F 72 and [bx+72h],ch
F000:DB4A 20 45 47 and [di+47h],al
F000:DB4D 41 inc cx
F000:DB4E 20 20 and [bx+si],ah
F000:DB50 20 20 and [bx+si],ah
F000:DB52 00 01 add [bx+di],al
F000:DB54 20 34 and [si],dh
F000:DB56 37 aaa ; Ascii adjust
F000:DB57 20 3D and [di],bh
F000:DB59 20 55 53 and [di+53h],dl
F000:DB5C 45 inc bp
F000:DB5D 52 push dx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 257
F000:DB5E 20 54 59 and [si+59h],dl
F000:DB61 50 push ax
F000:DB62 45 inc bp
F000:DB63 20 00 and [bx+si],al
F000:DB65 20 4D 6F and [di+6Fh],cl
F000:DB68 6E outsb ; Out [si] to port dx
F000:DB69 74 68 jz short $+6Ah ; Jump if zero
F000:DB6B 20 3A and [bp+si],bh
F000:DB6D 20 4A 61 and [bp+si+61h],cl
F000:DB70 6E outsb ; Out [si] to port dx
F000:DB71 2C 20 sub al,20h ; ' '
F000:DB73 46 inc si
F000:DB74 65: 62 2C bound bp,dword ptr gs:[si]
F000:DB77 2E 2E 2E 2E 2E 44 db '.....Dec', 0Dh, 0Ah, ' Date : 0'
F000:DB7D 65 63 0D 0A 20 44
F000:DB83 61 74 65 20 20 3A
F000:DB89 20 30
F000:DB8B 31 2C 20 30 32 2C db '1, 02, 03,...31', 0Dh, 0Ah, ' Ye'
F000:DB91 20 30 33 2C 2E 2E
F000:DB97 2E 33 31 0D 0A 20
F000:DB9D 59 65
F000:DB9F 61 72 20 20 3A 20 db 'ar : 1901, 1902,...2099'
F000:DBA5 31 39 30 31 2C 20
F000:DBAB 31 39 30 32 2C 2E
F000:DBB1 2E 2E 32 30 39 39
F000:DBB7 00 db 0
F000:DBB8 20 54 69 6D 65 20 db ' Time is 24 hour format:-', 0Dh, 0Ah
F000:DBBE 69 73 20 32 34 20
F000:DBC4 68 6F 75 72 20 66
F000:DBCA 6F 72 6D 61 74 3A
F000:DBD0 2D 0D 0A
F000:DBD3 20 48 6F 75 72 3A db ' Hour:(00-23), Minute:(00-59), S'
F000:DBD9 28 30 30 2D 32 33
F000:DBDF 29 2C 20 4D 69 6E
F000:DBE5 75 74 65 3A 28 30
F000:DBEB 30 2D 35 39 29 2C
F000:DBF1 20 53
F000:DBF3 65 63 6F 6E 64 3A db 'econd:(00-59)', 0Dh, 0Ah, ' (1:3'
F000:DBF9 28 30 30 2D 35 39
F000:DBFF 29 0D 0A 20 28 31
F000:DC05 3A 33
F000:DC07 30 20 41 4D 20 3D db '0 AM = 01:30:00), (1:30 PM = 1'
F000:DC0D 20 30 31 3A 33 30
F000:DC13 3A 30 30 29 2C 20
F000:DC19 20 20 28 31 3A 33
F000:DC1F 30 20 50 4D 20 3D
F000:DC25 20 31
F000:DC27 33 3A 33 30 3A 30 db '3:30:00)'
F000:DC2D 30 29
F000:DC2F 00 db 0
F000:DC30 20 4F 70 74 69 6F db ' Options:-', 0Dh, 0Ah, ' Monochr'
F000:DC36 6E 73 3A 2D 0D 0A
F000:DC3C 20 4D 6F 6E 6F 63
F000:DC42 68 72
F000:DC44 6F 6D 65 2C 20 20 db 'ome, Color 40x25,', 0Dh, 0Ah, ' '
F000:DC4A 43 6F 6C 6F 72 20
F000:DC50 34 30 78 32 35 2C
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 258
F000:DC56 0D 0A 20
F000:DC59 56 47 41 20 6F 72 db 'VGA or EGA, Color 80x25, Not I'
F000:DC5F 20 45 47 41 2C 20
F000:DC65 20 43 6F 6C 6F 72
F000:DC6B 20 38 30 78 32 35
F000:DC71 2C 20 20 4E 6F 74
F000:DC77 20 49
F000:DC79 6E 73 74 61 6C 6C db 'nstalled'
F000:DC7F 65 64
F000:DC81 00 db 0
F000:DC82 20 4F 70 74 69 6F db ' Options:-', 0Dh, 0Ah, ' 360 KB '
F000:DC88 6E 73 3A 2D 0D 0A
F000:DC8E 20 33 36 30 20 4B
F000:DC94 42 20
F000:DC96 35 db '5'
F000:DC97 AC db 0ACh
F000:DC98 loc_1195:
F000:DC98 22 2C and ch,[si]
F000:DC9A 20 20 and [bx+si],ah
F000:DC9C 31 2E 2032 xor ds:data_26e,bp ; (02F8:2032=26C1h)
F000:DCA0 20 4D 42 and [di+42h],cl
F000:DCA3 20 35 and [di],dh
F000:DCA5 AC lodsb ; String [si] to al
F000:DCA6 22 2C and ch,[si]
F000:DCA8 0D 200A or ax,200Ah
F000:DCAB 37 aaa ; Ascii adjust
F000:DCAC 32 30 xor dh,[bx+si]
F000:DCAE 20 4B 42 and [bp+di+42h],cl
F000:DCB1 20 33 and [bp+di],dh
F000:DCB3 AB stosw ; Store ax to es:[di]
F000:DCB4 22 2C and ch,[si]
F000:DCB6 20 20 and [bx+si],ah
F000:DCB8 31 2E 3434 xor ds:data_27e,bp ; (02F8:3434=1703h)
F000:DCBC 20 4D 42 and [di+42h],cl
F000:DCBF 20 33 and [bp+di],dh
F000:DCC1 AB stosw ; Store ax to es:[di]
F000:DCC2 22 2C and ch,[si]
F000:DCC4 20 20 and [bx+si],ah
F000:DCC6 4E dec si
F000:DCC7 6F outsw ; Out [si] to port dx
F000:DCC8 74 20 jz short $+22h ; Jump if zero
F000:DCCA 49 dec cx
F000:DCCB 6E outsb ; Out [si] to port dx
F000:DCCC 73 74 jnc short $+76h ; Jump if carry=0
F000:DCCE 61 popa ; Restore all regs
F000:DCCF 6C insb ; Port dx to es:[di]
F000:DCD0 6C insb ; Port dx to es:[di]
F000:DCD1 65 64 00 db 65h, 64h, 0
F000:DCD4 20 46 49 58 45 44 db ' FIXED type = 01...46, USER '
F000:DCDA 20 74 79 70 65 20
F000:DCE0 3D 20 30 31 2E 2E
F000:DCE6 2E 34 36 2C 20 55
F000:DCEC 53 45 52 20
F000:DCF0 loc_1196:
F000:DCF0 64 65 66 69 6E 65 db 'defined type = 47,', 0Dh, 0Ah, ' '
F000:DCF6 64 20 74 79 70 65
F000:DCFC 20 3D 20 34 37 2C
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 259
F000:DD02 0D 0A 20
F000:DD05 46 6F 72 20 74 79 db 'For type 47 Enter: Cyln,Head,WPc'
F000:DD0B 70 65 20 34 37 20
F000:DD11 45 6E 74 65 72 3A
F000:DD17 20 43 79 6C 6E 2C
F000:DD1D 48 65 61 64 2C 57
F000:DD23 50 63
F000:DD25 6F 6D 2C 4C 5A 6F db 'om,LZone,Sec,', 0Dh, 0Ah, ' (WPc'
F000:DD2B 6E 65 2C 53 65 63
F000:DD31 2C 0D 0A 20 28 57
F000:DD37 50 63
F000:DD39 6F 6D 20 69 73 20 db 'om is 0 for ALL, 65535 for NONE'
F000:DD3F 30 20 66 6F 72 20
F000:DD45 41 4C 4C 2C 20 20
F000:DD4B 36 35 35 33 35 20
F000:DD51 66 6F 72 20 4E 4F
F000:DD57 4E 45
F000:DD59 29 db ')'
F000:DD5A 00 db 0
F000:DD5B 20 4F 70 74 69 6F db ' Options:-', 0Dh, 0Ah, ' Install'
F000:DD61 6E 73 3A 2D 0D 0A
F000:DD67 20 49 6E 73 74 61
F000:DD6D 6C 6C
F000:DD6F 65 64 20 20 20 20 db 'ed : Test keyboard', 0Dh, 0Ah
F000:DD75 20 3A 20 54 65 73
F000:DD7B 74 20 6B 65 79 62
F000:DD81 6F 61 72 64 0D 0A
F000:DD87 20 4E 6F 74 20 49 db ' Not Installed : Do not test key'
F000:DD8D 6E 73 74 61 6C 6C
F000:DD93 65 64 20 3A 20 44
F000:DD99 6F 20 6E 6F 74 20
F000:DD9F 74 65 73 74 20 6B
F000:DDA5 65 79
F000:DDA7 62 6F 61 72 64 db 'board'
F000:DDAC 00 db 0
F000:DDAD 20 49 66 20 72 65 db ' If required, BIOS will use 256 '
F000:DDB3 71 75 69 72 65 64
F000:DDB9 2C 20 42 49 4F 53
F000:DDBF 20 77 69 6C 6C 20
F000:DDC5 75 73 65 20 32 35
F000:DDCB 36 20
F000:DDCD 62 79 74 65 73 20 db 'bytes of RAM', 0Dh, 0Ah, ' (1) :'
F000:DDD3 6F 66 20 52 41 4D
F000:DDD9 0D 0A 20 28 31 29
F000:DDDF 20 3A
F000:DDE1 20 55 73 69 6E 67 db ' Using BIOS stack area at 0030:0'
F000:DDE7 20 42 49 4F 53 20
F000:DDED 73 74 61 63 6B 20
F000:DDF3 61 72 65 61 20 61
F000:DDF9 74 20 30 30 33 30
F000:DDFF 3A 30
F000:DE01 30 30 30 0D 0A 20 db '000', 0Dh, 0Ah, ' (2) : Reducing'
F000:DE07 28 32 29 20 3A 20
F000:DE0D 52 65 64 75 63 69
F000:DE13 6E 67
F000:DE15 20 62 61 73 65 20 db ' base memory size by 1KB'
F000:DE1B 6D 65 6D 6F 72 79
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 260
F000:DE21 20 73 69 7A 65 20
F000:DE27 62 79 20 31 4B 42
F000:DE2D 00 db 0
F000:DE2E 20 4F 70 74 69 6F db ' Options:-', 0Dh, 0Ah, ' Enabled'
F000:DE34 6E 73 3A 2D 0D 0A
F000:DE3A 20 45 6E 61 62 6C
F000:DE40 65 64
F000:DE42 20 20 3A 20 53 68 db ' : Shadow RAM ON', 0Dh, 0Ah, ' '
F000:DE48 61 64 6F 77 20 52
F000:DE4E 41 4D 20 4F 4E 0D
F000:DE54 0A 20
F000:DE56 44 69 73 61 62 6C db 'Disabled : Shadow RAM OFF'
F000:DE5C 65 64 20 3A 20 53
F000:DE62 68 61 64 6F 77 20
F000:DE68 52 41 4D 20 4F 46
F000:DE6E 46
F000:DE6F 00 db 0
F000:DE70 20 57 72 69 74 65 db ' Write data into CMOS and exit ('
F000:DE76 20 64 61 74 61 20
F000:DE7C 69 6E 74 6F 20 43
F000:DE82 4D 4F 53 20 61 6E
F000:DE88 64 20 65 78 69 74
F000:DE8E 20 28
F000:DE90 59 2F 4E 29 3F 20 db 'Y/N)? '
F000:DE96 20 20
F000:DE98 08 08 00 53 75 6E db 8, 8, 0, 53h, 75h, 6Eh
F000:DE9E 00 4D 6F 6E 00 54 db 0, 4Dh, 6Fh, 6Eh, 0, 54h
F000:DEA4 75 65 00 57 65 64 db 75h, 65h, 0, 57h, 65h, 64h
F000:DEAA 00 54 68 75 00 46 db 0, 54h, 68h, 75h, 0, 46h
F000:DEB0 72 69 00 53 61 74 db 72h, 69h, 0, 53h, 61h, 74h
F000:DEB6 00 4A 61 6E 00 46 db 0, 4Ah, 61h, 6Eh, 0, 46h
F000:DEBC 65 62 00 4D 61 72 db 65h, 62h, 0, 4Dh, 61h, 72h
F000:DEC2 00 41 70 72 00 4D db 0, 41h, 70h, 72h, 0, 4Dh
F000:DEC8 61 79 00 4A 75 6E db 61h, 79h, 0, 4Ah, 75h, 6Eh
F000:DECE 00 4A 75 6C 00 41 db 0, 4Ah, 75h, 6Ch, 0, 41h
F000:DED4 75 67 00 53 65 70 db 75h, 67h, 0, 53h, 65h, 70h
F000:DEDA 00 4F 63 74 00 4E db 0, 4Fh, 63h, 74h, 0, 4Eh
F000:DEE0 6F 76 00 db 6Fh, 76h, 0
F000:DEE3 44 65 63 db 44h, 65h, 63h
F000:DEE6 011A[00] db 282 dup (0)
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:E000 int_18h_entry: ; xref F000:FF13
F000:E000 EA F000E005 jmp far ptr int_18h_basic ; (E005)
sub_233 endp
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 18h ▒▒▒▒▒
;
; ROM BASIC
F000:E005 int_18h_basic proc near ; xref F000:E000
F000:E005 E9 AF9F jmp loc_288 ; (8FA7)
F000:E008 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 261
F000:E00E 49 42 4D 20 43 4F db 'IBM COMPATIBLE IBM IS A TRADEMAR'
F000:E014 4D 50 41 54 49 42
F000:E01A 4C 45 20 49 42 4D
F000:E020 20 49 53 20 41 20
F000:E026 54 52 41 44 45 4D
F000:E02C 41 52
F000:E02E 4B 20 4F 46 20 49 db 'K OF INTERNATIONAL BUSINESS MACH'
F000:E034 4E 54 45 52 4E 41
F000:E03A 54 49 4F 4E 41 4C
F000:E040 20 42 55 53 49 4E
F000:E046 45 53 53 20 4D 41
F000:E04C 43 48
F000:E04E 49 4E 45 53 20 43 db 'INES CORP.'
F000:E054 4F 52 50 2E
F000:E058 FF data_149 db 0FFh ; Data table (indexed access)
; xref F000:BD3D
F000:E059 00 00 db 0, 0
F000:E05B loc_1197: ; xref F000:97C5, 9CBD, F9F3, FFF0
F000:E05B E9 A00E jmp system_reset ; (806C)
F000:E05E F1 A3 02 71 83 A5 db 0F1h, 0A3h, 2, 71h, 83h, 0A5h
F000:E064 A5 C5 A6 A6 71 44 db 0A5h, 0C5h, 0A6h, 0A6h, 71h, 44h
F000:E06A C5 B6 F5 66 B5 A6 db 0C5h, 0B6h, 0F5h, 66h, 0B5h, 0A6h
F000:E070 71 04 56 A5 52 71 db 71h, 4, 56h, 0A5h, 52h, 71h
F000:E076 82 03 F2 C2 32 71 db 82h, 3, 0F2h, 0C2h, 32h, 71h
F000:E07C 82 03 F2 D2 40 10 db 82h, 3, 0F2h, 0D2h, 40h, 10h
F000:E082 C2 03 72 71 71 D4 db 0C2h, 3, 72h, 71h, 71h, 0D4h
F000:E088 85 36 36 C5 07 71 db 85h, 36h, 36h, 0C5h, 7, 71h
F000:E08E 94 66 85 B5 32 71 db 94h, 66h, 85h, 0B5h, 32h, 71h
F000:E094 C4 76 76 C5 96 71 db 0C4h, 76h, 76h, 0C5h, 96h, 71h
F000:E09A 44 66 56 B6 A5 36 db 44h, 66h, 56h, 0B6h, 0A5h, 36h
F000:E0A0 85 06 96 32 40 10 db 85h, 6, 96h, 32h, 40h, 10h
F000:E0A6 71 54 C5 E6 71 14 db 71h, 54h, 0C5h, 0E6h, 71h, 14h
F000:E0AC C5 96 A6 C5 07 71 db 0C5h, 96h, 0A6h, 0C5h, 7, 71h
F000:E0B2 42 71 72 E2 72 B2 db 42h, 71h, 72h, 0E2h, 72h, 0B2h
F000:E0B8 A2 32 40 10 F1 92 db 0A2h, 32h, 40h, 10h, 0F1h, 92h
F000:E0BE 72 82 02 71 E2 B2 db 72h, 82h, 2, 71h, 0E2h, 0B2h
F000:E0C4 B2 42 03 82 92 D2 db 0B2h, 42h, 3, 82h, 92h, 0D2h
F000:E0CA 52 28 43 29 31 39 db 'R(C)1985-1990, American Megatren'
F000:E0D0 38 35 2D 31 39 39
F000:E0D6 30 2C 20 41 6D 65
F000:E0DC 72 69 63 61 6E 20
F000:E0E2 4D 65 67 61 74 72
F000:E0E8 65 6E
F000:E0EA 64 73 20 49 6E 63 db 'ds Inc.,All Rights Reserved.1346'
F000:E0F0 2E 2C 41 6C 6C 20
F000:E0F6 52 69 67 68 74 73
F000:E0FC 20 52 65 73 65 72
F000:E102 76 65 64 2E 31 33
F000:E108 34 36
F000:E10A 20 4F 61 6B 62 72 db ' Oakbrook Drive, Suite-120, Norc'
F000:E110 6F 6F 6B 20 44 72
F000:E116 69 76 65 2C 20 53
F000:E11C 75 69 74 65 2D 31
F000:E122 32 30 2C 20 4E 6F
F000:E128 72 63
F000:E12A 72 6F 73 73 2C 20 db 'ross, GA-30093. Phone-(404)-263-'
F000:E130 47 41 2D 33 30 30
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 262
F000:E136 39 33 2E 20 50 68
F000:E13C 6F 6E 65 2D 28 34
F000:E142 30 34 29 2D 32 36
F000:E148 33 2D
F000:E14A 38 31 38 31 2E db '8181.'
F000:E14F 00 db 0
F000:E150 loc_1198: ; xref F000:AA4D, AB63, AD04
F000:E150 FA cli ; Disable interrupts
F000:E151 E8 AD8E call sub_43 ; (8EE2)
F000:E154 E9 1862 jmp loc_1501 ; (F9B9)
F000:E157 B0 FE E6 64 db 0B0h, 0FEh, 0E6h, 64h
F000:E15B loc_1199: ; xref F000:E15C
F000:E15B F4 hlt ; Halt processor
F000:E15C EB FD jmp short loc_1199 ; (E15B)
F000:E15E 00 00 50 E1 20 00 db 0, 0, 50h, 0E1h, 20h, 0
F000:E164 00 87 00 00 50 E1 db 0, 87h, 0, 0, 50h, 0E1h
F000:E16A 20 00 00 87 00 00 db 20h, 0, 0, 87h, 0, 0
F000:E170 50 E1 20 00 00 87 db 50h, 0E1h, 20h, 0, 0, 87h
F000:E176 00 00 50 E1 20 00 db 0, 0, 50h, 0E1h, 20h, 0
F000:E17C 00 87 00 00 50 E1 db 0, 87h, 0, 0, 50h, 0E1h
F000:E182 20 00 00 87 00 00 db 20h, 0, 0, 87h, 0, 0
F000:E188 50 E1 20 00 00 db 50h, 0E1h, 20h, 0, 0
F000:E18D loc_1200:
F000:E18D 87 00 xchg ax,[bx+si]
F000:E18F 00 50 E1 add [bx+si-1Fh],dl
F000:E192 20 00 and [bx+si],al
F000:E194 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E198 50 push ax
F000:E199 E1 20 ;* loopz short locloop_1204 ;*Loop if zf=1, cx>0
F000:E199 E1 20 db 0E1h, 20h
F000:E19B loc_1201:
F000:E19B 00 00 add [bx+si],al
F000:E19D 87 00 xchg ax,[bx+si]
F000:E19F 00 A8 20FE add ds:data_25e[bx+si],ch ; (0040:20FE=16h)
F000:E1A3 00 00 add [bx+si],al
F000:E1A5 87 00 xchg ax,[bx+si]
F000:E1A7 00 50 E1 add [bx+si-1Fh],dl
F000:E1AA 20 00 and [bx+si],al
F000:E1AC 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E1B0 50 push ax
F000:E1B1 E1 20 loopz short locloop_1206 ; Loop if zf=1, cx>0
F000:E1B3 locloop_1203:
F000:E1B3 00 00 add [bx+si],al
F000:E1B5 87 00 xchg ax,[bx+si]
F000:E1B7 00 50 E1 add [bx+si-1Fh],dl
F000:E1BA 20 00 and [bx+si],al
F000:E1BC 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E1C0 50 push ax
F000:E1C1 E1 20 loopz short locloop_1208 ; Loop if zf=1, cx>0
F000:E1C3 00 00 add [bx+si],al
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 263
F000:E1C5 87 00 xchg ax,[bx+si]
F000:E1C7 00 50 E1 add [bx+si-1Fh],dl
F000:E1CA 20 00 and [bx+si],al
F000:E1CC 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E1D0 50 push ax
F000:E1D1 E1 20 loopz short locloop_1210 ; Loop if zf=1, cx>0
F000:E1D3 locloop_1206: ; xref F000:E1B1
F000:E1D3 00 00 add [bx+si],al
F000:E1D5 87 00 xchg ax,[bx+si]
F000:E1D7 00 53 FF add [bp+di-1],dl
F000:E1DA 20 00 and [bx+si],al
F000:E1DC 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E1E0 50 push ax
F000:E1E1 E1 20 loopz short locloop_1211 ; Loop if zf=1, cx>0
F000:E1E3 locloop_1208: ; xref F000:E1C1
F000:E1E3 00 00 add [bx+si],al
F000:E1E5 87 00 xchg ax,[bx+si]
F000:E1E7 00 50 E1 add [bx+si-1Fh],dl
F000:E1EA 20 00 and [bx+si],al
F000:E1EC 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E1F0 50 push ax
F000:E1F1 E1 20 loopz short locloop_1213 ; Loop if zf=1, cx>0
F000:E1F3 locloop_1210: ; xref F000:E1D1
F000:E1F3 00 00 add [bx+si],al
F000:E1F5 87 00 xchg ax,[bx+si]
F000:E1F7 00 50 E1 add [bx+si-1Fh],dl
F000:E1FA 20 00 and [bx+si],al
F000:E1FC 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E200 50 push ax
F000:E201 E1 20 loopz short locloop_1215 ; Loop if zf=1, cx>0
F000:E203 locloop_1211: ; xref F000:E1E1
F000:E203 00 00 add [bx+si],al
F000:E205 87 00 xchg ax,[bx+si]
F000:E207 00 50 E1 add [bx+si-1Fh],dl
F000:E20A 20 00 and [bx+si],al
F000:E20C 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E210 50 push ax
F000:E211 E1 20 loopz short locloop_1217 ; Loop if zf=1, cx>0
F000:E213 locloop_1213: ; xref F000:E1F1
F000:E213 00 00 add [bx+si],al
F000:E215 87 00 xchg ax,[bx+si]
F000:E217 00 50 E1 add [bx+si-1Fh],dl
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 264
F000:E21A 20 00 and [bx+si],al
F000:E21C 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E220 50 push ax
F000:E221 E1 20 loopz short locloop_1219 ; Loop if zf=1, cx>0
F000:E223 locloop_1215: ; xref F000:E201
F000:E223 00 00 add [bx+si],al
F000:E225 87 00 xchg ax,[bx+si]
F000:E227 00 50 E1 add [bx+si-1Fh],dl
F000:E22A 20 00 and [bx+si],al
F000:E22C 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E230 50 push ax
F000:E231 E1 20 loopz short locloop_1221 ; Loop if zf=1, cx>0
F000:E233 locloop_1217: ; xref F000:E211
F000:E233 00 00 add [bx+si],al
F000:E235 87 00 xchg ax,[bx+si]
F000:E237 00 50 E1 add [bx+si-1Fh],dl
F000:E23A 20 00 and [bx+si],al
F000:E23C 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E240 50 push ax
F000:E241 E1 20 ;* loopz short locloop_1222 ;*Loop if zf=1, cx>0
F000:E241 E1 20 db 0E1h, 20h
F000:E243 locloop_1219: ; xref F000:E221
F000:E243 00 00 add [bx+si],al
F000:E245 87 00 xchg ax,[bx+si]
F000:E247 00 50 E1 add [bx+si-1Fh],dl
F000:E24A 20 00 and [bx+si],al
F000:E24C 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E250 50 push ax
F000:E251 E1 20 ;* loopz short locloop_1224 ;*Loop if zf=1, cx>0
F000:E251 E1 20 db 0E1h, 20h
F000:E253 locloop_1221: ; xref F000:E231
F000:E253 00 00 add [bx+si],al
F000:E255 87 00 xchg ax,[bx+si]
F000:E257 00 50 E1 add [bx+si-1Fh],dl
F000:E25A 20 00 and [bx+si],al
F000:E25C 00 87 0000 add [bx+0],al
nop ;*Fixup for MASM (M)
F000:E260 00 00 add [bx+si],al
F000:E262 00 00 add [bx+si],al
F000:E264 00 00 add [bx+si],al
F000:E266 00 00 add [bx+si],al
F000:E268 0060 E260 930F data_152 dw 60h, 0E260h, 930Fh ; xref F000:CB58, F9BA
F000:E26E 0000 dw 0
F000:E270 0100 E160 000F data_153 dw 100h, 0E160h, 0Fh ; xref F000:CB00
F000:E276 0000 dw 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 265
F000:E278 00 FC 00 04 00 93 db 0, 0FCh, 0, 4, 0, 93h
F000:E27E 00 00 FF FF 00 00 db 0, 0, 0FFh, 0FFh, 0, 0
F000:E284 0F 9B 00 00 00 01 db 0Fh, 9Bh, 0, 0, 0, 1
F000:E28A 00 03 00 93 00 00 db 0, 3, 0, 93h, 0, 0
F000:E290 FF FF 00 00 0F 9B db 0FFh, 0FFh, 0, 0, 0Fh, 9Bh
F000:E296 000A[00] db 10 dup (0)
F000:E2A0 FFFF 0000 9300 data_155 dw 0FFFFh, 0, 9300h ; xref F000:CB86, F9E8
F000:E2A6 0000 dw 0
F000:E2A8 0010[00] db 16 dup (0)
F000:E2B8 FFFF 0000 0000 data_157 dw 0FFFFh, 0, 0 ; xref F000:CB80, F9E2
F000:E2BE 0000 dw 0
F000:E2C0 BF data_158 db 0BFh ; xref F000:9139, 924A, 93BE, 93E5
; 9403, 9473, 974C, 9767
; 988B, C98B
F000:E2C1 00 00 db 0, 0
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:E2C3 int_2_entry:
F000:E2C3 E9 06C4 jmp int_2_NMI ; (E98A)
F000:E2C6 D8 E4 B3 BB 00 00 db 0D8h, 0E4h, 0B3h, 0BBh, 0, 0
F000:E2CC 00 00 00 00 db 0, 0, 0, 0
F000:E2D0 30 30 30 30 30 30 db '0000000000000000(C)1990 American'
F000:E2D6 30 30 30 30 30 30
F000:E2DC 30 30 30 30 28 43
F000:E2E2 29 31 39 39 30 20
F000:E2E8 41 6D 65 72 69 63
F000:E2EE 61 6E
F000:E2F0 20 4D 65 67 61 74 db ' Megatrends Inc.ROM-BIOS (C)1989'
F000:E2F6 72 65 6E 64 73 20
F000:E2FC 49 6E 63 2E 52 4F
F000:E302 4D 2D 42 49 4F 53
F000:E308 20 28 43 29 31 39
F000:E30E 38 39
F000:E310 20 41 6D 65 72 69 db ' American Megatrends Inc', 0Dh, 0Ah
F000:E316 63 61 6E 20 4D 65
F000:E31C 67 61 74 72 65 6E
F000:E322 64 73 20 49 6E 63
F000:E328 0D 0A
F000:E32A 0D 0A db 0Dh, 0Ah
F000:E32C 00 00 00 00 00 db 0, 0, 0, 0, 0
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ Hard Disk Information Tables █
; █ █
; █ Each sub-table contains a █
; █ a set of 16 bytes for each █
; █ particular disk type. █
; █ █
; █ Type number specified may █
; █ differ with manufactures █
; █ specification. The hard █
; █ disk table shown here █
; █ assumes the first entry █
; █ is type 0. █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 266
F000:E331 0000 hdsk_cylinders dw 0 ; Number of cylinders, hdsk_type_0
F000:E333 00 hdsk_heads db 0 ; Number of heads
F000:E334 0000 hdsk_lo_wrt_cyl dw 0 ; Low write current cyl begin *
F000:E336 0000 hdsk_precompcyl dw 0 ; Write pre-compensation cylinder
F000:E338 00 hdsk_err_length db 0 ; Error correction burst length *
F000:E339 00 hdsk_misl_bits db 0 ; Miscellaneous bit functions:
; bits 0-2 disk option, XT only*
; 0-2 unused, all others
; 3 = 1 if > 8 heads
; 4 unused
; 5 = 1 for bad map at last
; cylinder + 1
; 6 or 7 = 1 no retries
F000:E33A 00 hdsk_timeout db 0 ; Normal timeout *
F000:E33B 00 hdsk_fmt_timout db 0 ; Format timeout *
F000:E33C 00 hdsk_chk_timout db 0 ; Check timeout *
F000:E33D 0000 hdsk_parkng_cyl dw 0 ; Parking cylinder number
F000:E33F 00 hdsk_sectr_trac db 0 ; Number of sectors per track
F000:E340 00 hdsk_unused db 0 ; Unused
; * indicates XT machines only
F000:E341 00 00 00 00 00 00 hdsk_type_1 db 0, 0, 0, 0, 0, 0
F000:E347 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E34D 00 00 00 00 db 0, 0, 0, 0
F000:E351 00 00 00 00 00 00 hdsk_type_2 db 0, 0, 0, 0, 0, 0
F000:E357 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E35D 00 00 00 00 db 0, 0, 0, 0
F000:E361 00 00 00 00 00 00 hdsk_type_3 db 0, 0, 0, 0, 0, 0
F000:E367 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E36D 00 00 00 00 db 0, 0, 0, 0
F000:E371 00 00 00 00 00 00 hdsk_type_4 db 0, 0, 0, 0, 0, 0
F000:E377 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E37D 00 00 00 00 db 0, 0, 0, 0
F000:E381 00 00 00 00 00 00 hdsk_type_5 db 0, 0, 0, 0, 0, 0
F000:E387 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E38D 00 00 00 00 db 0, 0, 0, 0
F000:E391 00 00 00 00 00 00 hdsk_type_6 db 0, 0, 0, 0, 0, 0
F000:E397 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E39D 00 00 00 00 db 0, 0, 0, 0
F000:E3A1 00 00 00 00 00 00 hdsk_type_7 db 0, 0, 0, 0, 0, 0
F000:E3A7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E3AD 00 00 00 00 db 0, 0, 0, 0
F000:E3B1 00 00 00 00 00 00 hdsk_type_8 db 0, 0, 0, 0, 0, 0
F000:E3B7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E3BD 00 00 00 00 db 0, 0, 0, 0
F000:E3C1 00 00 00 00 00 00 hdsk_type_9 db 0, 0, 0, 0, 0, 0
F000:E3C7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E3CD 00 00 00 00 db 0, 0, 0, 0
F000:E3D1 00 00 00 00 00 00 hdsk_type_A db 0, 0, 0, 0, 0, 0
F000:E3D7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E3DD 00 00 00 00 db 0, 0, 0, 0
F000:E3E1 00 00 00 00 00 00 hdsk_type_B db 0, 0, 0, 0, 0, 0
F000:E3E7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E3ED 00 00 00 00 db 0, 0, 0, 0
F000:E3F1 00 00 00 00 00 00 hdsk_type_C db 0, 0, 0, 0, 0, 0
F000:E3F7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E3FD 00 00 00 00 db 0, 0, 0, 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 267
F000:E401 32 01 04 00 00 80 hdsk_type_D db 32h, 1, 4, 0, 0, 80h
F000:E407 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E40D 31 01 11 00 db 31h, 1, 11h, 0
F000:E411 67 02 04 00 00 2C hdsk_type_E db 67h, 2, 4, 0, 0, 2Ch
F000:E417 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E41D 67 02 11 00 db 67h, 2, 11h, 0
F000:E421 67 02 06 00 00 2C hdsk_type_F db 67h, 2, 6, 0, 0, 2Ch
F000:E427 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E42D 67 02 11 00 db 67h, 2, 11h, 0
F000:E431 AC 03 08 00 00 00 hdsk_type_10 db 0ACh, 3, 8, 0, 0, 0
F000:E437 02 00 00 00 00 00 db 2, 0, 0, 0, 0, 0
F000:E43D AC 03 11 00 db 0ACh, 3, 11h, 0
F000:E441 AC 03 06 00 00 00 hdsk_type_11 db 0ACh, 3, 6, 0, 0, 0
F000:E447 02 00 00 00 00 00 db 2, 0, 0, 0, 0, 0
F000:E44D AC 03 11 00 db 0ACh, 3, 11h, 0
F000:E451 67 02 04 00 00 FF hdsk_type_12 db 67h, 2, 4, 0, 0, 0FFh
F000:E457 FF 00 00 00 00 00 db 0FFh, 0, 0, 0, 0, 0
F000:E45D 67 02 11 00 db 67h, 2, 11h, 0
F000:E461 CE 01 08 00 00 00 hdsk_type_13 db 0CEh, 1, 8, 0, 0, 0
F000:E467 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E46D FF 01 11 00 db 0FFh, 1, 11h, 0
F000:E471 DD 02 05 00 00 FF hdsk_type_14 db 0DDh, 2, 5, 0, 0, 0FFh
F000:E477 FF 00 00 00 00 00 db 0FFh, 0, 0, 0, 0, 0
F000:E47D DD 02 11 00 db 0DDh, 2, 11h, 0
F000:E481 84 03 0F 00 00 FF hdsk_type_15 db 84h, 3, 0Fh, 0, 0, 0FFh
F000:E487 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E48D 85 03 11 00 db 85h, 3, 11h, 0
F000:E491 34 03 03 00 00 FF hdsk_type_16 db 34h, 3, 3, 0, 0, 0FFh
F000:E497 FF 00 00 00 00 00 db 0FFh, 0, 0, 0, 0, 0
F000:E49D 34 03 11 00 db 34h, 3, 11h, 0
F000:E4A1 57 03 05 00 00 FF hdsk_type_17 db 57h, 3, 5, 0, 0, 0FFh
F000:E4A7 FF 00 00 00 00 00 db 0FFh, 0, 0, 0, 0, 0
F000:E4AD 57 03 11 00 db 57h, 3, 11h, 0
F000:E4B1 57 03 07 00 00 FF hdsk_type_18 db 57h, 3, 7, 0, 0, 0FFh
F000:E4B7 FF 00 00 00 00 00 db 0FFh, 0, 0, 0, 0, 0
F000:E4BD 57 03 11 00 db 57h, 3, 11h, 0
F000:E4C1 32 01 08 00 00 80 hdsk_type_19 db 32h, 1, 8, 0, 0, 80h
F000:E4C7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E4CD 3F 01 11 00 db 3Fh, 1, 11h, 0
F000:E4D1 DD 02 07 00 00 FF hdsk_type_1A db 0DDh, 2, 7, 0, 0, 0FFh
F000:E4D7 FF 00 00 00 00 00 db 0FFh, 0, 0, 0, 0, 0
F000:E4DD DD 02 11 00 db 0DDh, 2, 11h, 0
F000:E4E1 00 00 00 00 00 00 hdsk_type_1B db 0, 0, 0, 0, 0, 0
F000:E4E7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E4ED 00 00 00 00 db 0, 0, 0, 0
F000:E4F1 64 02 04 00 00 00 hdsk_type_1C db 64h, 2, 4, 0, 0, 0
F000:E4F7 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E4FD 97 02 11 00 db 97h, 2, 11h, 0
F000:E501 D1 03 05 00 00 2C hdsk_type_1D db 0D1h, 3, 5, 0, 0, 2Ch
F000:E507 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E50D D1 03 11 00 db 0D1h, 3, 11h, 0
F000:E511 D1 03 07 00 00 FF hdsk_type_1E db 0D1h, 3, 7, 0, 0, 0FFh
F000:E517 FF 00 00 00 00 00 db 0FFh, 0, 0, 0, 0, 0
F000:E51D D1 03 11 00 db 0D1h, 3, 11h, 0
F000:E521 00 04 07 00 00 00 hdsk_type_1F db 0, 4, 7, 0, 0, 0
F000:E527 02 00 00 00 00 00 db 2, 0, 0, 0, 0, 0
F000:E52D FF 03 11 00 db 0FFh, 3, 11h, 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 268
F000:E531 DD 02 05 00 00 2C hdsk_type_20 db 0DDh, 2, 5, 0, 0, 2Ch
F000:E537 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E53D DC 02 11 00 db 0DCh, 2, 11h, 0
F000:E541 DD 02 07 00 00 2C hdsk_type_21 db 0DDh, 2, 7, 0, 0, 2Ch
F000:E547 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E54D DC 02 11 00 db 0DCh, 2, 11h, 0
F000:E551 DD 02 05 00 00 2C hdsk_type_22 db 0DDh, 2, 5, 0, 0, 2Ch
F000:E557 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E55D DD 02 11 00 db 0DDh, 2, 11h, 0
F000:E561 32 01 04 00 00 00 hdsk_type_23 db 32h, 1, 4, 0, 0, 0
F000:E567 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E56D 50 01 11 00 db 50h, 1, 11h, 0
F000:E571 9D 03 07 00 00 00 hdsk_type_24 db 9Dh, 3, 7, 0, 0, 0
F000:E577 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E57D 9D 03 11 00 db 9Dh, 3, 11h, 0
F000:E581 9D 03 09 00 00 FF hdsk_type_25 db 9Dh, 3, 9, 0, 0, 0FFh
F000:E587 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E58D 9D 03 11 00 db 9Dh, 3, 11h, 0
F000:E591 F2 02 07 00 00 F2 hdsk_type_26 db 0F2h, 2, 7, 0, 0, 0F2h
F000:E597 02 00 00 00 00 00 db 2, 0, 0, 0, 0, 0
F000:E59D F2 02 11 00 db 0F2h, 2, 11h, 0
F000:E5A1 F2 02 0B 00 00 FF hdsk_type_27 db 0F2h, 2, 0Bh, 0, 0, 0FFh
F000:E5A7 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E5AD F2 02 11 00 db 0F2h, 2, 11h, 0
F000:E5B1 BB 02 07 00 00 00 hdsk_type_28 db 0BBh, 2, 7, 0, 0, 0
F000:E5B7 01 00 00 00 00 00 db 1, 0, 0, 0, 0, 0
F000:E5BD BB 02 11 00 db 0BBh, 2, 11h, 0
F000:E5C1 37 03 0A 00 00 FF hdsk_type_29 db 37h, 3, 0Ah, 0, 0, 0FFh
F000:E5C7 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E5CD 37 03 11 00 db 37h, 3, 11h, 0
F000:E5D1 96 03 07 00 00 96 hdsk_type_2A db 96h, 3, 7, 0, 0, 96h
F000:E5D7 03 00 00 00 00 00 db 3, 0, 0, 0, 0, 0
F000:E5DD 96 03 11 00 db 96h, 3, 11h, 0
F000:E5E1 00 04 0B 00 00 FF hdsk_type_2B db 0, 4, 0Bh, 0, 0, 0FFh
F000:E5E7 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E5ED 00 04 11 00 db 0, 4, 11h, 0
F000:E5F1 00 04 0F 00 00 FF hdsk_type_2C db 0, 4, 0Fh, 0, 0, 0FFh
F000:E5F7 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E5FD 00 04 11 00 db 0, 4, 11h, 0
F000:E601 00 04 05 00 00 00 hdsk_type_2D db 0, 4, 5, 0, 0, 0
F000:E607 04 00 00 00 00 00 db 4, 0, 0, 0, 0, 0
F000:E60D 00 04 11 00 db 0, 4, 11h, 0
F000:E611 64 02 02 00 00 80 hdsk_type_2E db 64h, 2, 2, 0, 0, 80h
F000:E617 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E61D 64 02 11 00 db 64h, 2, 11h, 0
F000:E621 00 04 09 00 00 FF hdsk_type_2F db 0, 4, 9, 0, 0, 0FFh
F000:E627 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E62D 00 04 11 00 db 0, 4, 11h, 0
F000:E631 00 04 08 00 00 00 hdsk_type_30 db 0, 4, 8, 0, 0, 0
F000:E637 02 00 00 00 00 00 db 2, 0, 0, 0, 0, 0
F000:E63D 00 04 11 00 db 0, 4, 11h, 0
F000:E641 67 02 08 00 00 80 hdsk_type_31 db 67h, 2, 8, 0, 0, 80h
F000:E647 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:E64D 67 02 11 00 db 67h, 2, 11h, 0
F000:E651 DB 03 03 00 00 DB hdsk_type_32 db 0DBh, 3, 3, 0, 0, 0DBh
F000:E657 03 00 00 00 00 00 db 3, 0, 0, 0, 0, 0
F000:E65D DB 03 11 00 db 0DBh, 3, 11h, 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 269
F000:E661 DB 03 07 00 00 DB hdsk_type_33 db 0DBh, 3, 7, 0, 0, 0DBh
F000:E667 03 00 00 00 00 00 db 3, 0, 0, 0, 0, 0
F000:E66D DB 03 11 00 db 0DBh, 3, 11h, 0
F000:E671 34 03 06 00 00 34 hdsk_type_34 db 34h, 3, 6, 0, 0, 34h
F000:E677 03 00 00 00 00 00 db 3, 0, 0, 0, 0, 0
F000:E67D 34 03 11 00 db 34h, 3, 11h, 0
F000:E681 D1 03 05 00 00 D1 hdsk_type_35 db 0D1h, 3, 5, 0, 0, 0D1h
F000:E687 03 00 00 00 00 00 db 3, 0, 0, 0, 0, 0
F000:E68D D1 03 11 00 db 0D1h, 3, 11h, 0
F000:E691 D5 03 05 00 00 D5 hdsk_type_36 db 0D5h, 3, 5, 0, 0, 0D5h
F000:E697 03 00 00 00 00 00 db 3, 0, 0, 0, 0, 0
F000:E69D D5 03 11 00 db 0D5h, 3, 11h, 0
F000:E6A1 3E 03 07 00 00 00 hdsk_type_37 db 3Eh, 3, 7, 0, 0, 0
F000:E6A7 02 00 00 00 00 00 db 2, 0, 0, 0, 0, 0
F000:E6AD 3E 03 11 00 db 3Eh, 3, 11h, 0
F000:E6B1 3E 03 0A 00 00 FF hdsk_type_38 db 3Eh, 3, 0Ah, 0, 0, 0FFh
F000:E6B7 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E6BD 3E 03 11 00 db 3Eh, 3, 11h, 0
F000:E6C1 95 03 0F 00 00 FF hdsk_type_39 db 95h, 3, 0Fh, 0, 0, 0FFh
F000:E6C7 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E6CD 96 03 11 00 db 96h, 3, 11h, 0
F000:E6D1 C8 04 0F 00 00 FF hdsk_type_3A db 0C8h, 4, 0Fh, 0, 0, 0FFh
F000:E6D7 FF 00 08 00 00 00 db 0FFh, 0, 8, 0, 0, 0
F000:E6DD C7 04 11 00 db 0C7h, 4, 11h, 0
F000:E6E1 0011[00] db 17 dup (0)
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:E6F2 int_19h_entry: ; xref F000:FF15
F000:E6F2 E9 A8CF jmp int_19h_bootup ; (8FC4)
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ System Configuration Table █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
F000:E6F5 0008 Config_tbl_size dw 8 ; Size of table in bytes
F000:E6F7 FC Config_model db 0FCh ; Model type
; 0F8h = 80386 model 70-80 types
; 0FCh = 80286 model 50-60 types
; also most 80286/80386
; compatibles
; 0FAh = 8088/86 model 25-30 type
F000:E6F8 01 Config_sub_mode db 1 ; Sub-Model type
F000:E6F9 00 Config_BIOS_rev db 0 ; BIOS revsion number
F000:E6FA 70 Config_features db 70h ; Feature information
; bit 7=1, hard disk uses DMA 3
; bit 6=1, dual interrupt chips
; bit 5=1, has real-time-clock
; bit 4=1, int 15h, ah=4Fh is
; supported (keyboard)
; bit 3=1, external wait support
; bit 2=1, has extended BIOS RAM
; bit 1=1, micro-channel
; bit 0=1, unused
F000:E6FB 00 00 00 00 Config_info_byt db 0, 0, 0, 0 ; Information bytes (future use)
F000:E6FF 002A[00] db 42 dup (0)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 270
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ Baud Rate Table █
; █ █
; █ Table of hex divsors for █
; █ the serial ports. Table █
; █ divisors for bauds 110 to █
; █ 19,200. █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
F000:E729 0417 baud_rate_tbl dw 417h ; 110 Baud rate divisor
F000:E72B 0300 baud_150 dw 300h
F000:E72D 0180 baud_300 dw 180h
F000:E72F 00C0 baud_600 dw 0C0h
F000:E731 0060 baud_1200 dw 60h
F000:E733 0030 baud_2400 dw 30h
F000:E735 0018 baud_4800 dw 18h
F000:E737 000C baud_9600 dw 0Ch
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:E739 int_14h_entry: ; xref F000:FF0B
F000:E739 E9 11A6 jmp int_14h_RS232 ; (F8E2)
F000:E73C 89 71 61 60 09 41 db 89h, 71h, 61h, 60h, 9, 41h
F000:E742 71 91 F7 38 11 40 db 71h, 91h, 0F7h, 38h, 11h, 40h
F000:E748 80 C0 B8 C0 F7 01 db 80h, 0C0h, 0B8h, 0C0h, 0F7h, 1
F000:E74E 62 22 8A 42 12 02 db 62h, 22h, 8Ah, 42h, 12h, 2
F000:E754 6A F7 61 22 32 02 db 6Ah, 0F7h, 61h, 22h, 32h, 2
F000:E75A 9A 8A 22 6A 1A 92 db 9Ah, 8Ah, 22h, 6Ah, 1Ah, 92h
F000:E760 F7 41 6A 12 5F 47 db 0F7h, 41h, 6Ah, 12h, 5Fh, 47h
F000:E766 5F 47 FE D5 A5 3D db 5Fh, 47h, 0FEh, 0D5h, 0A5h, 3Dh
F000:E76C D1 45 D2 B8 02 90 db 0D1h, 45h, 0D2h, 0B8h, 2, 90h
F000:E772 60 DA 41 C4 76 E8 db 60h, 0DAh, 41h, 0C4h, 76h, 0E8h
F000:E778 8F 1D AD E0 19 83 db 8Fh, 1Dh, 0ADh, 0E0h, 19h, 83h
F000:E77E 5D 12 11 04 DA F4 db 5Dh, 12h, 11h, 4, 0DAh, 0F4h
F000:E784 C3 8D BE 72 FA D0 db 0C3h, 8Dh, 0BEh, 72h, 0FAh, 0D0h
F000:E78A E4 19 E7 B3 AF 90 db 0E4h, 19h, 0E7h, 0B3h, 0AFh, 90h
F000:E790 01 20 0E 0D DA 02 db 1, 20h, 0Eh, 0Dh, 0DAh, 2
F000:E796 C3 F4 E0 AF 10 D1 db 0C3h, 0F4h, 0E0h, 0AFh, 10h, 0D1h
F000:E79C FC 04 FD 43 79 CD db 0FCh, 4, 0FDh, 43h, 79h, 0CDh
F000:E7A2 31 BC FA 81 D6 CF db 31h, 0BCh, 0FAh, 81h, 0D6h, 0CFh
F000:E7A8 BF 54 89 DE BD 83 db 0BFh, 54h, 89h, 0DEh, 0BDh, 83h
F000:E7AE 1D A2 BC 53 C7 3B db 1Dh, 0A2h, 0BCh, 53h, 0C7h, 3Bh
F000:E7B4 BB F3 FD 43 77 DA db 0BBh, 0F3h, 0FDh, 43h, 77h, 0DAh
F000:E7BA B4 F4 90 38 02 1D db 0B4h, 0F4h, 90h, 38h, 2, 1Dh
F000:E7C0 80 F5 21 D7 79 D2 db 80h, 0F5h, 21h, 0D7h, 79h, 0D2h
F000:E7C6 4B F2 8D C7 B4 12 db 4Bh, 0F2h, 8Dh, 0C7h, 0B4h, 12h
F000:E7CC 99 F7 37 F1 7F F8 db 99h, 0F7h, 37h, 0F1h, 7Fh, 0F8h
F000:E7D2 FB 42 9F F8 42 89 db 0FBh, 42h, 9Fh, 0F8h, 42h, 89h
F000:E7D8 33 FD D8 DA 24 17 db 33h, 0FDh, 0D8h, 0DAh, 24h, 17h
F000:E7DE D7 BF 94 B8 7F 1F db 0D7h, 0BFh, 94h, 0B8h, 7Fh, 1Fh
F000:E7E4 97 CE 77 DC db 97h, 0CEh, 77h, 0DCh
F000:E7E8 0046[00] db 70 dup (0)
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 271
F000:E82E int_16h_entry: ; xref F000:FF0F
F000:E82E E9 B84B jmp int_16h_keybd ; (A07C)
int_18h_basic endp
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 0Eh ▒▒▒▒▒
;
; FLOPPY DISK CONTROLLER (called by hardware 8259-1, IRQ 6)
F000:E831 int_0Eh_floppy proc near ; xref F000:EF57
F000:E831 FB sti ; Enable interrupts
F000:E832 50 push ax
F000:E833 1E push ds
F000:E834 6A 40 push 40h
F000:E836 1F pop ds
assume ds:seg_b
F000:E837 80 0E 003E 80 or dsk_recal_stat,80h ; (0040:003E=0)
F000:E83C B0 20 mov al,20h ; ' '
F000:E83E E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:E840 B8 9101 mov ax,9101h
F000:E843 EB 18 jmp short loc_1227 ; (E85D)
int_0Eh_floppy endp
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 76h ▒▒▒▒▒
;
; HARD DISK CONTROLLER (called by hardware 8259-2 IRQ 14)
;
; When the hard disk controller has completed its task, it signals
; completion though hardware activation of int 76h. The status in
; hdsk_int_flags is set to "done", a value of 0FFh. Interrupt 15,
; function 91h may also be called to signal the interrupt is done.
F000:E845 int_76h_hddone proc near ; xref F000:FF2F
F000:E845 FB sti ; Enable interrupts
F000:E846 50 push ax
F000:E847 1E push ds
F000:E848 6A 40 push 40h
F000:E84A 1F pop ds
F000:E84B C6 06 008E FF mov hdsk_int_flags,0FFh ; (0040:008E=0)
F000:E850 B0 20 mov al,20h ; ' '
F000:E852 E6 A0 out 0A0h,al ; port 0A0h, 8259-2 int command
; al = 20h, end of interrupt
F000:E854 EB 00 jmp short loc_1225 ; (E856)
F000:E856 loc_1225: ; xref F000:E854
F000:E856 EB 00 jmp short loc_1226 ; (E858)
F000:E858 loc_1226: ; xref F000:E856
F000:E858 E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:E85A B8 9100 mov ax,9100h
F000:E85D loc_1227: ; xref F000:E843
F000:E85D 1F pop ds
F000:E85E CD 15 int 15h ; General services, ah=func 91h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 272
; interrupt complete, al=type
F000:E860 58 pop ax
F000:E861 CF iret ; Interrupt return
int_76h_hddone endp
F000:E862 001C[00] db 28 dup (0)
F000:E87E 52 3A 45 46 38 1D db 52h, 3Ah, 45h, 46h, 38h, 1Dh
F000:E884 2A 36 80 40 20 10 db 2Ah, 36h, 80h, 40h, 20h, 10h
F000:E88A 08 04 02 01 db 8, 4, 2, 1
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9CC0
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_234 proc near
F000:E88E FA cli ; Disable interrupts
F000:E88F 50 push ax
F000:E890 1E push ds
F000:E891 3C 4A cmp al,4Ah ; 'J'
F000:E893 75 05 jne short loc_1228 ; Jump if not equal
F000:E895 E8 0016 call sub_235 ; (E8AE)
F000:E898 EB 10 jmp short loc_1231 ; (E8AA)
F000:E89A loc_1228: ; xref F000:E893
F000:E89A 3C 4E cmp al,4Eh ; 'N'
F000:E89C 75 05 jne short loc_1229 ; Jump if not equal
F000:E89E E8 0012 call sub_236 ; (E8B3)
F000:E8A1 EB 07 jmp short loc_1231 ; (E8AA)
F000:E8A3 loc_1229: ; xref F000:E89C
F000:E8A3 3C 2B cmp al,2Bh ; '+'
F000:E8A5 75 03 jne short loc_1231 ; Jump if not equal
F000:E8A7 EB 00 jmp short loc_1230 ; (E8A9)
F000:E8A9 loc_1230: ; xref F000:E8A7
F000:E8A9 90 nop ;
F000:E8AA loc_1231: ; xref F000:E898, E8A1, E8A5
F000:E8AA 1F pop ds
F000:E8AB 58 pop ax
F000:E8AC FB sti ; Enable interrupts
F000:E8AD C3 retn
sub_234 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:E895
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_235 proc near
F000:E8AE BB 0000 mov bx,0
F000:E8B1 EB 03 jmp short loc_1232 ; (E8B6)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:E89E
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 273
sub_236:
F000:E8B3 BB 0001 mov bx,1
F000:E8B6 loc_1232: ; xref F000:E8B1
F000:E8B6 BE E2C8 mov si,0E2C8h
assume ds:seg_a
F000:E8B9 F6 06 0017 03 test byte ptr vector_5h_seg+1,3 ; (0000:0017=0F0h)
F000:E8BE 74 09 jz short loc_1234 ; Jump if zero
F000:E8C0 3C 4A cmp al,4Ah ; 'J'
F000:E8C2 75 00 jne short loc_1233 ; Jump if not equal
F000:E8C4 loc_1233: ; xref F000:E8C2
F000:E8C4 BE E2CC mov si,0E2CCh
F000:E8C7 EB 03 jmp short loc_1235 ; (E8CC)
F000:E8C9 loc_1234: ; xref F000:E8BE
F000:E8C9 E9 008E jmp loc_1249 ; (E95A)
F000:E8CC loc_1235: ; xref F000:E8C7, E97D
F000:E8CC 2E: 8A 18 mov bl,cs:[bx+si]
F000:E8CF 0A DB or bl,bl ; Zero ?
F000:E8D1 75 03 jnz short loc_1237 ; Jump if not zero
F000:E8D3 loc_1236: ; xref F000:E8D9
F000:E8D3 E9 0082 jmp loc_1248 ; (E958)
F000:E8D6 loc_1237: ; xref F000:E8D1
F000:E8D6 E8 B63E call sub_70 ; (9F17)
F000:E8D9 75 F8 jnz loc_1236 ; Jump if not zero
F000:E8DB 8A C3 mov al,bl
F000:E8DD BA 00FB mov dx,0FBh
F000:E8E0 3C B4 cmp al,0B4h
F000:E8E2 74 13 je short loc_1238 ; Jump if equal
F000:E8E4 B6 04 mov dh,4
F000:E8E6 3C BC cmp al,0BCh
F000:E8E8 74 0D je short loc_1238 ; Jump if equal
F000:E8EA BA 00F7 mov dx,0F7h
F000:E8ED 3C B5 cmp al,0B5h
F000:E8EF 74 06 je short loc_1238 ; Jump if equal
F000:E8F1 B6 08 mov dh,8
F000:E8F3 3C BD cmp al,0BDh
F000:E8F5 75 0F jne short loc_1239 ; Jump if not equal
F000:E8F7 loc_1238: ; xref F000:E8E2, E8E8, E8EF
F000:E8F7 B8 3737 mov ax,3737h
F000:E8FA E8 05A2 call sub_257 ; (EE9F)
F000:E8FD 22 C2 and al,dl
F000:E8FF 0A C6 or al,dh
F000:E901 86 C4 xchg al,ah
F000:E903 E8 05A8 call sub_258 ; (EEAE)
F000:E906 loc_1239: ; xref F000:E8F5
F000:E906 E4 21 in al,21h ; port 21h, 8259-1 int IMR
F000:E908 EB 00 jmp short loc_1240 ; (E90A)
F000:E90A loc_1240: ; xref F000:E908
F000:E90A EB 00 jmp short loc_1241 ; (E90C)
F000:E90C loc_1241: ; xref F000:E90A
F000:E90C 8A D0 mov dl,al
F000:E90E E4 A1 in al,0A1h ; port 0A1h, 8259-2 int IMR
F000:E910 EB 00 jmp short loc_1242 ; (E912)
F000:E912 loc_1242: ; xref F000:E910
F000:E912 EB 00 jmp short loc_1243 ; (E914)
F000:E914 loc_1243: ; xref F000:E912
F000:E914 8A F0 mov dh,al
F000:E916 B0 FD mov al,0FDh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 274
F000:E918 E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:E91A EB 00 jmp short loc_1244 ; (E91C)
F000:E91C loc_1244: ; xref F000:E91A
F000:E91C EB 00 jmp short loc_1245 ; (E91E)
F000:E91E loc_1245: ; xref F000:E91C
F000:E91E B0 FF mov al,0FFh
F000:E920 E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
; al = 0FFh, inhibit interrupts
F000:E922 33 C0 xor ax,ax ; Zero register
F000:E924 8E D8 mov ds,ax
F000:E926 BE E93F mov si,0E93Fh
F000:E929 87 36 0024 xchg si,vector_9h_off ; (0000:0024=452h)
F000:E92D 8C CF mov di,cs
F000:E92F 87 3E 0026 xchg di,vector_9h_seg ; (0000:0026=0D3D1h)
F000:E933 B0 20 mov al,20h ; ' '
F000:E935 E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:E937 8A C3 mov al,bl
F000:E939 FB sti ; Enable interrupts
F000:E93A E6 64 out 64h,al ; port 64h, kybd cntrlr functn
F000:E93C loc_1246: ; xref F000:E93D
F000:E93C F4 hlt ; Halt processor
F000:E93D EB FD jmp short loc_1246 ; (E93C)
F000:E93F E4 60 89 3E 26 00 db 0E4h, 60h, 89h, 3Eh, 26h, 0
F000:E945 89 36 24 00 8A C6 db 89h, 36h, 24h, 0, 8Ah, 0C6h
F000:E94B E6 A1 EB 00 EB 00 db 0E6h, 0A1h, 0EBh, 0, 0EBh, 0
F000:E951 loc_1247:
F000:E951 8A C2 mov al,dl
F000:E953 E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:E955 83 C4 06 add sp,6
F000:E958 loc_1248: ; xref F000:E8D3
F000:E958 FB sti ; Enable interrupts
F000:E959 C3 retn
F000:E95A loc_1249: ; xref F000:E8C9
F000:E95A 83 FB 00 cmp bx,0
F000:E95D 74 05 je short loc_1250 ; Jump if equal
F000:E95F B0 F5 mov al,0F5h
F000:E961 EB 03 jmp short loc_1251 ; (E966)
F000:E963 90 db 90h
F000:E964 loc_1250: ; xref F000:E95D
F000:E964 B0 F4 mov al,0F4h
F000:E966 loc_1251: ; xref F000:E961
F000:E966 E6 FB out 0FBh,al ; port 0FBh
F000:E968 EB 00 jmp short loc_1252 ; (E96A)
F000:E96A loc_1252: ; xref F000:E968
F000:E96A EB 00 jmp short loc_1253 ; (E96C)
F000:E96C loc_1253: ; xref F000:E96A
F000:E96C 52 push dx
F000:E96D 32 E4 xor ah,ah ; Zero register
F000:E96F 8B D0 mov dx,ax
F000:E971 EE out dx,al ; port 0F4h
F000:E972 EB 00 jmp short loc_1254 ; (E974)
F000:E974 loc_1254: ; xref F000:E972
F000:E974 EB 00 jmp short loc_1255 ; (E976)
F000:E976 loc_1255: ; xref F000:E974
F000:E976 E6 F9 out 0F9h,al ; port 0F9h
F000:E978 EB 00 jmp short loc_1256 ; (E97A)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 275
F000:E97A loc_1256: ; xref F000:E978
F000:E97A EB 00 jmp short loc_1257 ; (E97C)
F000:E97C loc_1257: ; xref F000:E97A
F000:E97C 5A pop dx
F000:E97D E9 FF4C jmp loc_1235 ; (E8CC)
sub_235 endp
F000:E980 0007[00] db 7 dup (0)
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:E987 int_9_entry: ; xref F000:FEF5
F000:E987 E9 B176 ;* jmp int_9_keyboard ;*(9B00)
F000:E987 E9 76 B1 db 0E9h, 76h, 0B1h
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 2 ▒▒▒▒▒▒▒
;
; NON-MASKABLE HARDWARE INTERRUPT
;
; This function is called in the event of a memory parity error or may
; occur in the event of other hardware problems or failures (depends on
; the specific manufacturer's hardware). Displays the appropriate
; error message and halts the processor.
F000:E98A int_2_NMI proc near ; xref F000:E2C3
F000:E98A 50 push ax
F000:E98B B0 8D mov al,8Dh
F000:E98D E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
F000:E98F E4 61 in al,61h ; port 61h, 8255 port B, read
F000:E991 A8 C0 test al,0C0h
F000:E993 75 0A jnz short loc_1260 ; Jump if not zero
F000:E995 B0 0D mov al,0Dh
F000:E997 EB 00 jmp short loc_1258 ; (E999)
F000:E999 loc_1258: ; xref F000:E997
F000:E999 EB 00 jmp short loc_1259 ; (E99B)
F000:E99B loc_1259: ; xref F000:E999
F000:E99B E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 0Dh, status register D
F000:E99D 58 pop ax
F000:E99E CF iret ; Interrupt return
int_2_NMI endp
F000:E99F loc_1260: ; xref F000:E993
F000:E99F 33 C0 xor ax,ax ; Zero register
F000:E9A1 8E D8 mov ds,ax
F000:E9A3 8B 16 0413 mov dx,main_ram_size_ ; (0000:0413=280h)
F000:E9A7 CD 10 int 10h ; Video display ah=functn 00h
; set display mode in al
F000:E9A9 FA cli ; Disable interrupts
F000:E9AA FC cld ; Clear direction
F000:E9AB E8 A495 call sub_33 ; (8E43)
F000:E9AE 33 DB xor bx,bx ; Zero register
F000:E9B0 33 F6 xor si,si ; Zero register
F000:E9B2 loc_1261: ; xref F000:E9CB
F000:E9B2 8E DB mov ds,bx
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 276
F000:E9B4 B9 8000 mov cx,8000h
F000:E9B7 locloop_1262: ; xref F000:E9C2
F000:E9B7 AD lodsw ; String [si] to ax
F000:E9B8 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:E9BA A8 80 test al,80h
F000:E9BC 75 15 jnz short loc_1263 ; Jump if not zero
F000:E9BE A8 40 test al,40h ; '@'
F000:E9C0 75 16 jnz short loc_1264 ; Jump if not zero
F000:E9C2 E2 F3 loop locloop_1262 ; Loop if cx > 0
F000:E9C4 81 C3 1000 add bx,1000h
F000:E9C8 83 EA 40 sub dx,40h
F000:E9CB 73 E5 jnc loc_1261 ; Jump if carry=0
F000:E9CD BE 7EA8 mov si,7EA8h
F000:E9D0 E9 A3C5 jmp loc_230 ; (8D98)
F000:E9D3 loc_1263: ; xref F000:E9BC
F000:E9D3 BF 7E69 mov di,7E69h
F000:E9D6 EB 03 jmp short loc_1265 ; (E9DB)
F000:E9D8 loc_1264: ; xref F000:E9C0
F000:E9D8 BF 7E7F mov di,7E7Fh
F000:E9DB loc_1265: ; xref F000:E9D6
F000:E9DB 87 F7 xchg si,di
F000:E9DD E8 A3D9 call sub_27 ; (8DB9)
F000:E9E0 BE 7E96 mov si,7E96h
F000:E9E3 E8 A3D3 call sub_27 ; (8DB9)
F000:E9E6 8C D8 mov ax,ds
F000:E9E8 E8 0015 call sub_237 ; (EA00)
F000:E9EB B0 3A mov al,3Ah ; ':'
F000:E9ED E8 A3E2 call sub_29 ; (8DD2)
F000:E9F0 8B C7 mov ax,di
F000:E9F2 E8 000B call sub_237 ; (EA00)
F000:E9F5 B0 29 mov al,29h ; ')'
F000:E9F7 E8 A3D8 call sub_29 ; (8DD2)
F000:E9FA BE EA25 mov si,0EA25h
F000:E9FD E9 A398 jmp loc_230 ; (8D98)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:E9E8, E9F2
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_237 proc near
F000:EA00 50 push ax
F000:EA01 8A C4 mov al,ah
F000:EA03 E8 0005 call sub_238 ; (EA0B)
F000:EA06 58 pop ax
F000:EA07 E8 0001 call sub_238 ; (EA0B)
F000:EA0A C3 retn
sub_237 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:EA03, EA07
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 277
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_238 proc near
F000:EA0B 50 push ax
F000:EA0C C1 E8 04 shr ax,4 ; Shift w/zeros fill
F000:EA0F E8 0005 call sub_239 ; (EA17)
F000:EA12 58 pop ax
F000:EA13 E8 0001 call sub_239 ; (EA17)
F000:EA16 C3 retn
sub_238 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:EA0F, EA13
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_239 proc near
F000:EA17 24 0F and al,0Fh
F000:EA19 3C 0A cmp al,0Ah
F000:EA1B 72 02 jb short loc_1266 ; Jump if below
F000:EA1D 04 07 add al,7
F000:EA1F loc_1266: ; xref F000:EA1B
F000:EA1F 04 30 add al,30h ; '0'
F000:EA21 E8 A3AE call sub_29 ; (8DD2)
F000:EA24 C3 retn
sub_239 endp
F000:EA25 0D 0A 00 db 0Dh, 0Ah, 0
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 70h ▒▒▒▒▒
;
; REAL-TIME CLOCK (called by hardware 8259-2, IRQ 8)
;
; This interrupt services the real-time clock hardware. The hardware
; supports 2 modes of operation, an interrupt at a specific 24 hour
; interval (i.e 9:42 am), or repeatedly every 0.976 ms (1,024 Khz).
; Both modes can operate at the same time if needed.
;
; In the 24 hour alarm mode, the interrupt is vectored here by hardware
; and interrupt 4Ah is called to alert the application program of the
; alarm. Int 4Ah is not handled by the BIOS other than to return, and
; is normally revectored by a particular application using the alarm.
;
; When repeating interrupt mode is active, the 32-bit microsecond
; counter consisting of timer_clk_low and timer_clk_hi is decremented
; by 976 us on every interrupt. When the timer reaches zero, the
; byte pointed to by the offset @timer_wait_off and and segment
; @timer_wait_seg is set to 80h (this pointer is set by an application
; program through int 1Ah function ah=6).
F000:EA28 int_70h_clock proc near ; xref F000:FF23
F000:EA28 1E push ds
F000:EA29 50 push ax
F000:EA2A 57 push di
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 278
F000:EA2B loc_1267: ; xref F000:EA65, EA6D
F000:EA2B E8 044D call sub_253 ; (EE7B)
F000:EA2E A8 60 test al,60h ; '`'
F000:EA30 74 3D jz short loc_1269 ; Jump if zero
F000:EA32 8A E0 mov ah,al
F000:EA34 E8 043E call sub_252 ; (EE75)
F000:EA37 22 C4 and al,ah
F000:EA39 50 push ax
F000:EA3A A8 40 test al,40h ; '@'
F000:EA3C 74 24 jz short loc_1268 ; Jump if zero
F000:EA3E 6A 40 push 40h
F000:EA40 1F pop ds
assume ds:seg_b
F000:EA41 81 2E 009C 03D0 sub timer_clk_low,3D0h ; (0040:009C=0)
F000:EA47 83 1E 009E 00 sbb timer_clk_hi,0 ; (0040:009E=0)
F000:EA4C 73 14 jnc short loc_1268 ; Jump if carry=0
F000:EA4E E8 0424 call sub_252 ; (EE75)
F000:EA51 24 BF and al,0BFh
F000:EA53 E8 042B call sub_254 ; (EE81)
F000:EA56 C6 06 00A0 00 mov byte ptr ds:data_62e,0 ; (C000:00A0=6Fh)
F000:EA5B C5 3E 0098 lds di,dword ptr ds:data_61e ; (C000:0098=6175h) Load 32 bit ptr
F000:EA5F C6 05 80 mov byte ptr [di],80h
F000:EA62 loc_1268: ; xref F000:EA3C, EA4C
F000:EA62 58 pop ax
F000:EA63 A8 20 test al,20h ; ' '
F000:EA65 74 C4 jz loc_1267 ; Jump if zero
F000:EA67 FB sti ; Enable interrupts
F000:EA68 52 push dx
F000:EA69 CD 4A int 4Ah ; RTC Alarm occurred
F000:EA6B 5A pop dx
F000:EA6C FA cli ; Disable interrupts
F000:EA6D EB BC jmp short loc_1267 ; (EA2B)
F000:EA6F loc_1269: ; xref F000:EA30
F000:EA6F B0 20 mov al,20h ; ' '
F000:EA71 E6 A0 out 0A0h,al ; port 0A0h, 8259-2 int command
; al = 20h, end of interrupt
F000:EA73 EB 00 jmp short loc_1270 ; (EA75)
F000:EA75 loc_1270: ; xref F000:EA73
F000:EA75 EB 00 jmp short loc_1271 ; (EA77)
F000:EA77 loc_1271: ; xref F000:EA75
F000:EA77 E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:EA79 5F pop di
F000:EA7A 58 pop ax
F000:EA7B 1F pop ds
F000:EA7C CF iret ; Interrupt return
int_70h_clock endp
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ unused ▒▒▒▒▒
;
; Unused interrupt vector termination
;
; This routine processes invalid and unused interrupt requests. The
; hardware IRQ number is loaded into gen_int_occured, and the interrupt
; cleared. For software calls to an unused interrupt, a value 0FFh is
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 279
; loaded into gen_int_occured, and the routine returns to the caller
; without changing registers.
;
; Alternatively, some systems simply return (iret).
F000:EA7D int_unused proc near ; xref F000:EB26, FEF7, FEF9, FEFB
; FEFD, FF27, FF29, FF2B
F000:EA7D 50 push ax
F000:EA7E 52 push dx
F000:EA7F BA 0020 mov dx,20h
F000:EA82 E8 0041 call sub_241 ; (EAC6)
F000:EA85 74 20 jz short loc_1273 ; Jump if zero
F000:EA87 50 push ax
F000:EA88 B2 A0 mov dl,0A0h
F000:EA8A E8 0039 call sub_241 ; (EAC6)
F000:EA8D 74 0D jz short loc_1272 ; Jump if zero
F000:EA8F B2 A1 mov dl,0A1h
F000:EA91 E8 001F call sub_240 ; (EAB3)
F000:EA94 B0 20 mov al,20h ; ' '
F000:EA96 E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:EA98 58 pop ax
F000:EA99 40 inc ax
F000:EA9A EB 0B jmp short loc_1273 ; (EAA7)
F000:EA9C loc_1272: ; xref F000:EA8D
F000:EA9C 58 pop ax
F000:EA9D 24 FB and al,0FBh
F000:EA9F B2 21 mov dl,21h ; '!'
F000:EAA1 E8 000F call sub_240 ; (EAB3)
F000:EAA4 8A C4 mov al,ah
F000:EAA6 40 inc ax
F000:EAA7 loc_1273: ; xref F000:EA85, EA9A
F000:EAA7 48 dec ax
F000:EAA8 1E push ds
F000:EAA9 6A 40 push 40h
F000:EAAB 1F pop ds
F000:EAAC A2 006B mov gen_int_occured,al ; (0040:006B=0FFh)
F000:EAAF 1F pop ds
F000:EAB0 5A pop dx
F000:EAB1 58 pop ax
F000:EAB2 CF iret ; Interrupt return
int_unused endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:EA91, EAA1
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_240 proc near
F000:EAB3 8A E0 mov ah,al
F000:EAB5 EC in al,dx ; port 0A1h, 8259-2 int IMR
F000:EAB6 0A C4 or al,ah
F000:EAB8 EB 00 jmp short loc_1274 ; (EABA)
F000:EABA loc_1274: ; xref F000:EAB8
F000:EABA EB 00 jmp short loc_1275 ; (EABC)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 280
F000:EABC loc_1275: ; xref F000:EABA
F000:EABC EE out dx,al ; port 0A1h, 8259-2 int comands
F000:EABD B0 20 mov al,20h ; ' '
F000:EABF 4A dec dx
F000:EAC0 EB 00 jmp short loc_1276 ; (EAC2)
F000:EAC2 loc_1276: ; xref F000:EAC0
F000:EAC2 EB 00 jmp short loc_1277 ; (EAC4)
F000:EAC4 loc_1277: ; xref F000:EAC2
F000:EAC4 EE out dx,al ; port 0A0h, 8259-2 int command
; al = 20h, end of interrupt
F000:EAC5 C3 retn
sub_240 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:EA82, EA8A
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_241 proc near
F000:EAC6 B0 0B mov al,0Bh
F000:EAC8 EE out dx,al ; port 20h, 8259-1 int command
F000:EAC9 EB 00 jmp short loc_1278 ; (EACB)
F000:EACB loc_1278: ; xref F000:EAC9
F000:EACB EB 00 jmp short loc_1279 ; (EACD)
F000:EACD loc_1279: ; xref F000:EACB
F000:EACD EC in al,dx ; port 20h, 8259-1 int IRR/ISR
F000:EACE 0A C0 or al,al ; Zero ?
F000:EAD0 C3 retn
sub_241 endp
F000:EAD1 55 8B EC 50 53 1E db 55h, 8Bh, 0ECh, 50h, 53h, 1Eh
F000:EAD7 C5 5E 02 8A 07 3C db 0C5h, 5Eh, 2, 8Ah, 7, 3Ch
F000:EADD 9B 74 39 3C 2E 74 db 9Bh, 74h, 39h, 3Ch, 2Eh, 74h
F000:EAE3 14 3C 3E 74 10 3C db 14h, 3Ch, 3Eh, 74h, 10h, 3Ch
F000:EAE9 36 74 0C 3C 26 74 db 36h, 74h, 0Ch, 3Ch, 26h, 74h
F000:EAEF 08 3C 64 74 04 3C db 8, 3Ch, 64h, 74h, 4, 3Ch
F000:EAF5 65 75 01 43 80 3F db 65h, 75h, 1, 43h, 80h, 3Fh
F000:EAFB D8 72 24 43 8A 07 db 0D8h, 72h, 24h, 43h, 8Ah, 7
F000:EB01 43 8A E0 25 C0 07 db 43h, 8Ah, 0E0h, 25h, 0C0h, 7
F000:EB07 3C 00 75 05 80 FC db 3Ch, 0, 75h, 5, 80h, 0FCh
F000:EB0D 06 db 6
F000:EB0E 75 0A db 75h, 0Ah
F000:EB10 loc_1280:
F000:EB10 3C C0 cmp al,0C0h
F000:EB12 74 06 je short loc_1282 ; Jump if equal
F000:EB14 43 inc bx
F000:EB15 3C 40 cmp al,40h ; '@'
F000:EB17 74 01 je short loc_1282 ; Jump if equal
F000:EB19 loc_1281: ; xref F000:EB36
F000:EB19 43 inc bx
F000:EB1A loc_1282: ; xref F000:EB12, EB17
F000:EB1A 89 5E 02 mov [bp+2],bx
F000:EB1D 1F pop ds
F000:EB1E 5B pop bx
F000:EB1F 58 pop ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 281
F000:EB20 5D pop bp
F000:EB21 CF iret ; Interrupt return
F000:EB22 loc_1283: ; xref F000:EB3B
F000:EB22 1F pop ds
F000:EB23 5B pop bx
F000:EB24 58 pop ax
F000:EB25 5D pop bp
F000:EB26 E9 FF54 jmp int_unused ; (EA7D)
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 6 ▒▒▒▒▒▒▒
;
; BAD OPCODE DETECTED
F000:EB29 int_6_badopcode proc near
F000:EB29 55 push bp
F000:EB2A 8B EC mov bp,sp
F000:EB2C 50 push ax
F000:EB2D 53 push bx
F000:EB2E 1E push ds
F000:EB2F C5 5E 02 lds bx,dword ptr [bp+2] ; Load 32 bit ptr
F000:EB32 8B 07 mov ax,[bx]
F000:EB34 3C F0 cmp al,0F0h
F000:EB36 74 E1 je loc_1281 ; Jump if equal
F000:EB38 3D 050F cmp ax,50Fh
F000:EB3B 75 E5 jne loc_1283 ; Jump if not equal
F000:EB3D FA cli ; Disable interrupts
F000:EB3E FC cld ; Clear direction
F000:EB3F 33 C0 xor ax,ax ; Zero register
F000:EB41 8E D8 mov ds,ax
F000:EB43 8B C4 mov ax,sp
F000:EB45 05 000E add ax,0Eh
F000:EB48 24 F8 and al,0F8h
F000:EB4A B9 0020 mov cx,20h
F000:EB4D 2B C1 sub ax,cx
F000:EB4F 8B E0 mov sp,ax
F000:EB51 8B F8 mov di,ax
F000:EB53 8B E8 mov bp,ax
F000:EB55 8C D0 mov ax,ss
F000:EB57 8E C0 mov es,ax
F000:EB59 BE E270 mov si,0E270h
F000:EB5C 2E: F3/ A4 rep movs byte ptr es:[di],cs:[si] ; Rep when cx >0 Mov [si] to es:[di]
F000:EB5F 8B FD mov di,bp
F000:EB61 8A CC mov cl,ah
F000:EB63 C0 E9 04 shr cl,4 ; Shift w/zeros fill
F000:EB66 C1 E0 04 shl ax,4 ; Shift w/zeros fill
F000:EB69 03 C7 add ax,di
F000:EB6B 80 D1 00 adc cl,0
F000:EB6E 83 C7 02 add di,2
F000:EB71 AB stosw ; Store ax to es:[di]
F000:EB72 8A C1 mov al,cl
F000:EB74 AA stosb ; Store al to es:[di]
F000:EB75 32 ED xor ch,ch ; Zero register
F000:EB77 83 C7 03 add di,3
F000:EB7A BE 0848 mov si,848h
F000:EB7D E8 0084 call sub_242 ; (EC04)
F000:EB80 8B D8 mov bx,ax
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 282
F000:EB82 72 03 jc short loc_1284 ; Jump if carry Set
F000:EB84 80 CD 01 or ch,1
F000:EB87 loc_1284: ; xref F000:EB82
F000:EB87 83 C7 0C add di,0Ch
F000:EB8A BE 0836 mov si,836h
F000:EB8D E8 0074 call sub_242 ; (EC04)
F000:EB90 72 03 jc short loc_1285 ; Jump if carry Set
F000:EB92 80 CD 02 or ch,2
F000:EB95 loc_1285: ; xref F000:EB90
F000:EB95 8E C0 mov es,ax
F000:EB97 8E DB mov ds,bx
F000:EB99 66| C1 C8 10 ror eax,10h ; Rotate
F000:EB9D 50 push ax
F000:EB9E 0F 01 56 00 lgdt qword ptr [bp] ; Load global des tbl
F000:EBA2 0F 20 C0 mov eax,cr0 ; Mov reg-control reg
F000:EBA5 0C 01 or al,1
F000:EBA7 0F 22 C0 mov cr0,eax ; Mov reg-control reg
;* This jump is a protected mode jump to flush the pre-fetch queue -
;* - the segment selector was ignored.
F000:EBAA EA 0010EBAF jmp far ptr loc_1286 ; (EBAF)
F000:EBAF loc_1286: ; xref F000:EBAA
F000:EBAF D0 ED shr ch,1 ; Shift w/zeros fill
F000:EBB1 73 05 jnc short loc_1287 ; Jump if carry=0
F000:EBB3 BB 0008 mov bx,8
F000:EBB6 8E DB mov ds,bx
F000:EBB8 loc_1287: ; xref F000:EBB1
F000:EBB8 D0 ED shr ch,1 ; Shift w/zeros fill
F000:EBBA 73 05 jnc short loc_1288 ; Jump if carry=0
F000:EBBC BB 0018 mov bx,18h
F000:EBBF 8E C3 mov es,bx
F000:EBC1 loc_1288: ; xref F000:EBBA
F000:EBC1 24 FE and al,0FEh
F000:EBC3 0F 22 C0 mov cr0,eax ; Mov reg-control reg
F000:EBC6 EA F000EBCB jmp far ptr loc_1289 ; (EBCB)
F000:EBCB loc_1289: ; xref F000:EBC6
F000:EBCB 58 pop ax
F000:EBCC 66| C1 C8 10 ror eax,10h ; Rotate
F000:EBD0 33 C0 xor ax,ax ; Zero register
F000:EBD2 8E D0 mov ss,ax
F000:EBD4 36: 8B 16 0818 mov dx,ss:data_18e ; (0000:0818=4EF0h)
F000:EBD9 36: 8B 1E 081A mov bx,ss:data_19e ; (0000:081A=7003h)
F000:EBDE 36: 8B 0E 0822 mov cx,ss:data_21e ; (0000:0822=1)
F000:EBE3 36: 8B 26 082C mov sp,ss:data_22e ; (0000:082C=2212h)
F000:EBE8 36: 8E 16 0820 mov ss,ss:data_20e ; (0000:0820=3)
F000:EBED 52 push dx
F000:EBEE 51 push cx
F000:EBEF 53 push bx
F000:EBF0 8E D0 mov ss,ax
F000:EBF2 BC 0826 mov sp,826h
F000:EBF5 61 popa ; Restore all regs
F000:EBF6 36: 8B 26 082C mov sp,ss:data_22e ; (0000:082C=2212h)
F000:EBFB 36: 8E 16 0820 mov ss,ss:data_20e ; (0000:0820=3)
F000:EC00 83 EC 06 sub sp,6
F000:EC03 CF iret ; Interrupt return
int_6_badopcode endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 283
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:EB7D, EB8D
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_242 proc near
F000:EC04 8B 44 04 mov ax,[si+4]
F000:EC07 AB stosw ; Store ax to es:[di]
F000:EC08 AD lodsw ; String [si] to ax
F000:EC09 AB stosw ; Store ax to es:[di]
F000:EC0A 8A 0C mov cl,[si]
F000:EC0C 26: 88 0D mov es:[di],cl
F000:EC0F A8 0F test al,0Fh
F000:EC11 75 0E jnz short loc_ret_1290 ; Jump if not zero
F000:EC13 F6 C1 F0 test cl,0F0h
F000:EC16 75 09 jnz short loc_ret_1290 ; Jump if not zero
F000:EC18 C1 E8 04 shr ax,4 ; Shift w/zeros fill
F000:EC1B C0 E1 04 shl cl,4 ; Shift w/zeros fill
F000:EC1E 0A E1 or ah,cl
F000:EC20 F9 stc ; Set carry flag
F000:EC21 loc_ret_1290: ; xref F000:EC11, EC16
F000:EC21 C3 retn
sub_242 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:EED5
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_243 proc near
F000:EC22 B0 20 mov al,20h ; ' '
F000:EC24 E6 A0 out 0A0h,al ; port 0A0h, 8259-2 int command
; al = 20h, end of interrupt
F000:EC26 EB 00 jmp short loc_1291 ; (EC28)
F000:EC28 loc_1291: ; xref F000:EC26
F000:EC28 EB 00 jmp short loc_1292 ; (EC2A)
F000:EC2A loc_1292: ; xref F000:EC28
F000:EC2A E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:EC2C C3 retn
sub_243 endp
F000:EC2D 002C[00] db 44 dup (0)
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:EC59 int_13h_entry: ; xref F000:FF09
F000:EC59 E9 C1CA jmp int_13h_floppy ; (AE26)
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 5 ▒▒▒▒▒▒▒
;
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 284
; PRINT SCREEN
;
; Send the present active display screen contents to the printer if
; the printer is idle and not out of paper. The status of the print
; screen function is in prn_screen_stat at 0050:0000. Control-Break
; will terminate an active print screen operation.
F000:EC5C int_5_prn_scrn proc near ; xref F000:FF54
F000:EC5C 60 pusha ; Save all regs
F000:EC5D 1E push ds
F000:EC5E 6A 40 push 40h
F000:EC60 1F pop ds
F000:EC61 B0 01 mov al,1
F000:EC63 86 06 0100 xchg al,prn_scrn_stat_b ; (0040:0100=0)
F000:EC67 3C 01 cmp al,1
F000:EC69 74 65 je short loc_1299 ; Jump if equal
F000:EC6B FB sti ; Enable interrupts
F000:EC6C 33 D2 xor dx,dx ; Zero register
F000:EC6E B4 02 mov ah,2
F000:EC70 CD 17 int 17h ; Printer dx=prn#, ah=func 12h
; read status, ah=return status
F000:EC72 80 F4 80 xor ah,80h
F000:EC75 F6 C4 A9 test ah,0A9h
F000:EC78 74 07 jz short loc_1293 ; Jump if zero
F000:EC7A E8 A18A call sub_31 ; (8E07)
F000:EC7D B1 FF mov cl,0FFh
F000:EC7F EB 4A jmp short loc_1298 ; (ECCB)
F000:EC81 loc_1293: ; xref F000:EC78
F000:EC81 E8 004F call sub_244 ; (ECD3)
F000:EC84 B4 0F mov ah,0Fh
F000:EC86 CD 10 int 10h ; Video display ah=functn 0Fh
; get state, al=mode, bh=page
F000:EC88 8A DC mov bl,ah
F000:EC8A B4 03 mov ah,3
F000:EC8C CD 10 int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
F000:EC8E 52 push dx
F000:EC8F 2B D2 sub dx,dx
F000:EC91 loc_1294: ; xref F000:ECAB, ECBB
F000:EC91 B4 02 mov ah,2
F000:EC93 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:EC95 B4 08 mov ah,8
F000:EC97 CD 10 int 10h ; Video display ah=functn 08h
; get char al & attrib ah @curs
F000:EC99 22 C0 and al,al
F000:EC9B 75 02 jnz short loc_1295 ; Jump if not zero
F000:EC9D B0 20 mov al,20h ; ' '
F000:EC9F loc_1295: ; xref F000:EC9B
F000:EC9F E8 003C call sub_245 ; (ECDE)
F000:ECA2 F6 C4 29 test ah,29h ; ')'
F000:ECA5 75 1A jnz short loc_1296 ; Jump if not zero
F000:ECA7 FE C2 inc dl
F000:ECA9 3A D3 cmp dl,bl
F000:ECAB 75 E4 jne loc_1294 ; Jump if not equal
F000:ECAD 2A D2 sub dl,dl
F000:ECAF E8 0021 call sub_244 ; (ECD3)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 285
F000:ECB2 FE C6 inc dh
F000:ECB4 A0 0084 mov al,video_rows ; (0040:0084=18h)
F000:ECB7 FE C0 inc al
F000:ECB9 3A F0 cmp dh,al
F000:ECBB 75 D4 jne loc_1294 ; Jump if not equal
F000:ECBD B1 00 mov cl,0
F000:ECBF EB 05 jmp short loc_1297 ; (ECC6)
F000:ECC1 loc_1296: ; xref F000:ECA5
F000:ECC1 E8 A143 call sub_31 ; (8E07)
F000:ECC4 B1 FF mov cl,0FFh
F000:ECC6 loc_1297: ; xref F000:ECBF
F000:ECC6 5A pop dx
F000:ECC7 B4 02 mov ah,2
F000:ECC9 CD 10 int 10h ; Video display ah=functn 02h
; set cursor location in dx
F000:ECCB loc_1298: ; xref F000:EC7F
F000:ECCB FA cli ; Disable interrupts
F000:ECCC 88 0E 0100 mov prn_scrn_stat_b,cl ; (0040:0100=0)
F000:ECD0 loc_1299: ; xref F000:EC69
F000:ECD0 1F pop ds
F000:ECD1 61 popa ; Restore all regs
F000:ECD2 CF iret ; Interrupt return
int_5_prn_scrn endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:EC81, ECAF
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_244 proc near
F000:ECD3 B0 0D mov al,0Dh
F000:ECD5 E8 0006 call sub_245 ; (ECDE)
F000:ECD8 B0 0A mov al,0Ah
F000:ECDA E8 0001 call sub_245 ; (ECDE)
F000:ECDD C3 retn
sub_244 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:EC9F, ECD5, ECDA
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_245 proc near
F000:ECDE 52 push dx
F000:ECDF 33 D2 xor dx,dx ; Zero register
F000:ECE1 32 E4 xor ah,ah ; Zero register
F000:ECE3 CD 17 int 17h ; Printer dx=prn#, ah=func 10h
; print char in al
F000:ECE5 5A pop dx
F000:ECE6 C3 retn
sub_245 endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 286
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 8 ▒▒▒▒▒▒▒
;
; TIMER TICKS (called by hardware 8259-1, IRQ 0)
;
; This is the primary timer used to control the clock and other key
; system resources. It is called indirectly by channel A of the 8253
; timer every 18.2 milliseconds. Every timer tick also calls int 1Ch
; for user needs (int 1Ch points to an iret instruction unless changed
; by a resident program). The timer interrupt is given the highest
; maskable interrupt priority upon power up.
;
; The main timing functions of int 8 include increment of a 32-bit
; time since powered on counter, timer_hi and timer_low, and after 24
; hours since powered on, timer_rolled is incremented.
;
; The last task of int 8 is turning off the floppy drive motor after
; 2 seconds of non-use. The counter dsk_motor_tmr is decremented upon
; each occurrence of int 8. When the count reaches zero, the motor is
; set off, and the motor running flags are cleared in dsk_motor_stat.
F000:ECE7 int_8_timer proc near ; xref F000:FEA5
F000:ECE7 FB sti ; Enable interrupts
F000:ECE8 1E push ds
F000:ECE9 6A 40 push 40h
F000:ECEB 1F pop ds
F000:ECEC 56 push si
F000:ECED 57 push di
F000:ECEE BE 006C mov si,6Ch
F000:ECF1 BF 006E mov di,6Eh
F000:ECF4 FF 04 inc word ptr [si]
F000:ECF6 75 02 jnz short loc_1300 ; Jump if not zero
F000:ECF8 FF 05 inc word ptr [di]
F000:ECFA loc_1300: ; xref F000:ECF6
F000:ECFA 83 3D 18 cmp word ptr [di],18h
F000:ECFD 75 12 jne short loc_1301 ; Jump if not equal
F000:ECFF 81 3C 00B0 cmp word ptr [si],0B0h
F000:ED03 75 0C jne short loc_1301 ; Jump if not equal
F000:ED05 C7 04 0000 mov word ptr [si],0
F000:ED09 C7 05 0000 mov word ptr [di],0
F000:ED0D C6 45 02 01 mov byte ptr [di+2],1
F000:ED11 loc_1301: ; xref F000:ECFD, ED03
F000:ED11 5F pop di
F000:ED12 5E pop si
F000:ED13 50 push ax
F000:ED14 52 push dx
F000:ED15 FE 0E 0040 dec dsk_motor_tmr ; (0040:0040=17h)
F000:ED19 75 0B jnz short loc_1302 ; Jump if not zero
F000:ED1B BA 03F2 mov dx,3F2h
F000:ED1E B0 0C mov al,0Ch
F000:ED20 80 26 003F F0 and dsk_motor_stat,0F0h ; (0040:003F=0)
F000:ED25 EE out dx,al ; port 3F2h, dsk0 contrl output
F000:ED26 loc_1302: ; xref F000:ED19
F000:ED26 CD 1C int 1Ch ; Timer break (call each 18.2ms)
F000:ED28 FA cli ; Disable interrupts
F000:ED29 B0 20 mov al,20h ; ' '
F000:ED2B E6 20 out 20h,al ; port 20h, 8259-1 int command
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 287
; al = 20h, end of interrupt
F000:ED2D 5A pop dx
F000:ED2E 58 pop ax
F000:ED2F 1F pop ds
F000:ED30 CF iret ; Interrupt return
int_8_timer endp
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 1Ah ▒▒▒▒▒
;
; REAL-TIME CLOCK SERVICES
;
; Call with: ah = sub-function number
;
; Functions:
; ah = 0 Get system timer (increments every 54.92 ms from int 8)
; Returns: al = # of 24 hour periods since read/powered up
; cx:dx = 32 bit count
; ah = 1 Get system timer & reset 24 hour counter
; Returns: cx:dx = 32 bit count
;
; **** System must have CMOS clock for services 2-0Bh ****
; ah = 2 Get time in BCD format
; Returns: ch/cl = hours/minutes
; dh = seconds
; dl = 0/1 if daylight savings time operation off/on
; carry flag = 0 if clock ok, 1 if stopped
; ah = 3 Set time in BCD format
; Call with: ch/cl = hours/minutes
; dh = seconds
; dl = 0/1 if daylight savings time operation off/on
; ah = 4 Get date in BCD format
; Returns: cx = four digit year
; dh/dl = month/day
; carry flag = 0 if clock ok, 1 if stopped
; ah = 5 Set date in BCD format
; Call with: cx = four digit year
; dh/dl = month/day
; ah = 6 Set 24 hour alarm (alarm vectors to int 4Ah)
; Call with: ch/cl = hours/minutes
; dh = seconds
; ah = 7 Clear alarm
; ah = 9 Get alarm time & status
; Returns: ch/cl = hours/minutes
; dh = seconds
; dl = 0/1 alarm off/on
; ah = 0Ah Get days counter
; Returns: cx = number of days since 1-Jan-80
; ah = 0Bh Set days counter
; Call with: cx = number of days since 1-Jan-80
F000:ED31 int_1Ah_RTC proc near ; xref F000:FE6E
F000:ED31 FB sti ; Enable interrupts
F000:ED32 80 FC 08 cmp ah,8
F000:ED35 73 2B jae short loc_1307 ; Jump if above or =
F000:ED37 80 FC 01 cmp ah,1
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 288
F000:ED3A 77 2B ja short loc_1308 ; Jump if above
F000:ED3C 1E push ds
F000:ED3D 6A 40 push 40h
F000:ED3F 1F pop ds
F000:ED40 B0 00 mov al,0
F000:ED42 FA cli ; Disable interrupts
F000:ED43 74 0E jz short loc_1303 ; Jump if zero
F000:ED45 86 06 0070 xchg al,timer_rolled ; (0040:0070=0)
F000:ED49 8B 16 006C mov dx,timer_low ; (0040:006C=0C491h)
F000:ED4D 8B 0E 006E mov cx,timer_hi ; (0040:006E=0Fh)
F000:ED51 EB 0B jmp short loc_1304 ; (ED5E)
F000:ED53 loc_1303: ; xref F000:ED43
F000:ED53 A2 0070 mov timer_rolled,al ; (0040:0070=0)
F000:ED56 89 16 006C mov timer_low,dx ; (0040:006C=0C492h)
F000:ED5A 89 0E 006E mov timer_hi,cx ; (0040:006E=0Fh)
F000:ED5E loc_1304: ; xref F000:ED51
F000:ED5E 1F pop ds
F000:ED5F loc_1305: ; xref F000:EDD1, EDE5, EE0B
F000:ED5F F9 stc ; Set carry flag
F000:ED60 loc_1306: ; xref F000:EE17
F000:ED60 B4 00 mov ah,0
F000:ED62 loc_1307: ; xref F000:ED35
F000:ED62 FB sti ; Enable interrupts
F000:ED63 F5 cmc ; Complement carry
F000:ED64 CA 0002 retf 2 ; Return far
int_1Ah_RTC endp
F000:ED67 loc_1308: ; xref F000:ED3A
F000:ED67 8A C4 mov al,ah
F000:ED69 98 cbw ; Convrt byte to word
F000:ED6A 48 dec ax
F000:ED6B 48 dec ax
F000:ED6C 74 51 jz short loc_1311 ; Jump if zero
F000:ED6E 48 dec ax
F000:ED6F 74 33 jz short loc_1310 ; Jump if zero
F000:ED71 48 dec ax
F000:ED72 74 5F jz short loc_1312 ; Jump if zero
F000:ED74 48 dec ax
F000:ED75 74 0C jz short loc_1309 ; Jump if zero
F000:ED77 48 dec ax
F000:ED78 74 6E jz short loc_1313 ; Jump if zero
F000:ED7A FA cli ; Disable interrupts
F000:ED7B E8 00F7 call sub_252 ; (EE75)
F000:ED7E 24 57 and al,57h ; 'W'
F000:ED80 E9 0085 jmp loc_1314 ; (EE08)
F000:ED83 loc_1309: ; xref F000:ED75
F000:ED83 E8 0094 call sub_247 ; (EE1A)
F000:ED86 52 push dx
F000:ED87 B8 3209 mov ax,3209h
F000:ED8A B2 08 mov dl,8
F000:ED8C E8 00C9 call sub_250 ; (EE58)
F000:ED8F 5A pop dx
F000:ED90 8A E2 mov ah,dl
F000:ED92 B0 07 mov al,7
F000:ED94 E8 0117 call sub_258 ; (EEAE)
F000:ED97 B8 0006 mov ax,6
F000:ED9A E8 0111 call sub_258 ; (EEAE)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 289
F000:ED9D E8 00D5 call sub_252 ; (EE75)
F000:EDA0 24 7F and al,7Fh
F000:EDA2 EB 64 jmp short loc_1314 ; (EE08)
F000:EDA4 loc_1310: ; xref F000:ED6F
F000:EDA4 E8 0073 call sub_247 ; (EE1A)
F000:EDA7 52 push dx
F000:EDA8 B8 0402 mov ax,402h
F000:EDAB B2 00 mov dl,0
F000:EDAD E8 00A8 call sub_250 ; (EE58)
F000:EDB0 5A pop dx
F000:EDB1 E8 00C1 call sub_252 ; (EE75)
F000:EDB4 24 60 and al,60h ; '`'
F000:EDB6 0C 02 or al,2
F000:EDB8 80 E2 01 and dl,1
F000:EDBB 0A C2 or al,dl
F000:EDBD EB 49 jmp short loc_1314 ; (EE08)
F000:EDBF loc_1311: ; xref F000:ED6C
F000:EDBF E8 004C call sub_246 ; (EE0E)
F000:EDC2 B0 02 mov al,2
F000:EDC4 B9 0004 mov cx,4
F000:EDC7 E8 007D call sub_249 ; (EE47)
F000:EDCA E8 00A8 call sub_252 ; (EE75)
F000:EDCD 24 01 and al,1
F000:EDCF 8A D0 mov dl,al
F000:EDD1 EB 8C jmp short loc_1305 ; (ED5F)
F000:EDD3 loc_1312: ; xref F000:ED72
F000:EDD3 E8 0038 call sub_246 ; (EE0E)
F000:EDD6 B0 09 mov al,9
F000:EDD8 B9 0832 mov cx,832h
F000:EDDB E8 0069 call sub_249 ; (EE47)
F000:EDDE B0 07 mov al,7
F000:EDE0 E8 00BC call sub_257 ; (EE9F)
F000:EDE3 8A D0 mov dl,al
F000:EDE5 E9 FF77 jmp loc_1305 ; (ED5F)
F000:EDE8 loc_1313: ; xref F000:ED78
F000:EDE8 FA cli ; Disable interrupts
F000:EDE9 E8 0089 call sub_252 ; (EE75)
F000:EDEC FB sti ; Enable interrupts
F000:EDED A8 20 test al,20h ; ' '
F000:EDEF 75 24 jnz short loc_1316 ; Jump if not zero
F000:EDF1 E8 0026 call sub_247 ; (EE1A)
F000:EDF4 52 push dx
F000:EDF5 B8 0503 mov ax,503h
F000:EDF8 B2 01 mov dl,1
F000:EDFA E8 005B call sub_250 ; (EE58)
F000:EDFD 5A pop dx
F000:EDFE E8 0069 call sub_251 ; (EE6A)
F000:EE01 E8 0071 call sub_252 ; (EE75)
F000:EE04 24 7F and al,7Fh
F000:EE06 0C 20 or al,20h ; ' '
F000:EE08 loc_1314: ; xref F000:ED80, EDA2, EDBD
F000:EE08 E8 0076 call sub_254 ; (EE81)
F000:EE0B E9 FF51 jmp loc_1305 ; (ED5F)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 290
; Called from: F000:EDBF, EDD3
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_246 proc near
F000:EE0E E8 0027 call sub_248 ; (EE38)
F000:EE11 75 01 jnz short loc_1315 ; Jump if not zero
F000:EE13 C3 retn
F000:EE14 loc_1315: ; xref F000:EE11
F000:EE14 58 pop ax
F000:EE15 loc_1316: ; xref F000:EDEF
F000:EE15 33 C0 xor ax,ax ; Zero register
F000:EE17 E9 FF46 jmp loc_1306 ; (ED60)
sub_246 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:ED83, EDA4, EDF1
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_247 proc near
F000:EE1A 51 push cx
F000:EE1B E8 001A call sub_248 ; (EE38)
F000:EE1E 59 pop cx
F000:EE1F 74 16 jz short loc_ret_1317 ; Jump if zero
F000:EE21 B8 260A mov ax,260Ah
F000:EE24 90 nop ;
F000:EE25 E8 0086 call sub_258 ; (EEAE)
F000:EE28 B8 820B mov ax,820Bh
F000:EE2B E8 0080 call sub_258 ; (EEAE)
F000:EE2E E8 004A call sub_253 ; (EE7B)
F000:EE31 B0 0D mov al,0Dh
F000:EE33 E8 0069 call sub_257 ; (EE9F)
F000:EE36 90 nop ;
F000:EE37 loc_ret_1317: ; xref F000:EE1F
F000:EE37 C3 retn
sub_247 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:EE0E, EE1B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_248 proc near
F000:EE38 B9 1000 mov cx,1000h
F000:EE3B locloop_1318: ; xref F000:EE44
F000:EE3B FB sti ; Enable interrupts
F000:EE3C B0 0A mov al,0Ah
F000:EE3E FA cli ; Disable interrupts
F000:EE3F E8 005D call sub_257 ; (EE9F)
F000:EE42 A8 80 test al,80h
F000:EE44 E0 F5 loopnz locloop_1318 ; Loop if zf=0, cx>0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 291
F000:EE46 C3 retn
sub_248 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:EDC7, EDDB
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_249 proc near
F000:EE47 FA cli ; Disable interrupts
F000:EE48 E8 0054 call sub_257 ; (EE9F)
F000:EE4B 86 C1 xchg al,cl
F000:EE4D E8 004F call sub_257 ; (EE9F)
F000:EE50 86 C5 xchg al,ch
F000:EE52 E8 004A call sub_257 ; (EE9F)
F000:EE55 86 C6 xchg al,dh
F000:EE57 C3 retn
sub_249 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:ED8C, EDAD, EDFA
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_250 proc near
F000:EE58 51 push cx
F000:EE59 86 E1 xchg ah,cl
F000:EE5B FA cli ; Disable interrupts
F000:EE5C E8 004F call sub_258 ; (EEAE)
F000:EE5F 91 xchg ax,cx
F000:EE60 E8 004B call sub_258 ; (EEAE)
F000:EE63 92 xchg ax,dx
F000:EE64 E8 0047 call sub_258 ; (EEAE)
F000:EE67 90 nop ;
F000:EE68 59 pop cx
F000:EE69 C3 retn
sub_250 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CBF7, EDFE
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_251 proc near
F000:EE6A E4 A1 in al,0A1h ; port 0A1h, 8259-2 int IMR
F000:EE6C 24 FE and al,0FEh
F000:EE6E EB 00 jmp short loc_1319 ; (EE70)
F000:EE70 loc_1319: ; xref F000:EE6E
F000:EE70 EB 00 jmp short loc_1320 ; (EE72)
F000:EE72 loc_1320: ; xref F000:EE70
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 292
F000:EE72 E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
F000:EE74 C3 retn
sub_251 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CC0F, EA34, EA4E, ED7B, ED9D, EDB1, EDCA
; EDE9, EE01
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_252 proc near
F000:EE75 B0 0B mov al,0Bh
F000:EE77 E8 0025 call sub_257 ; (EE9F)
F000:EE7A C3 retn
sub_252 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:EA2B, EE2E
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_253 proc near
F000:EE7B B0 0C mov al,0Ch
F000:EE7D E8 001F call sub_257 ; (EE9F)
F000:EE80 C3 retn
sub_253 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CC16, EA53, EE08
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_254 proc near
F000:EE81 B4 0B mov ah,0Bh
F000:EE83 86 C4 xchg al,ah
F000:EE85 E8 0026 call sub_258 ; (EEAE)
F000:EE88 C3 retn
sub_254 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8F07, CDB2, CE2A, CE36, EEA8, EEC1
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_255 proc near
F000:EE89 loc_1321: ; xref F000:832D, F649
F000:EE89 E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
F000:EE8B EB 00 jmp short loc_1322 ; (EE8D)
F000:EE8D loc_1322: ; xref F000:EE8B
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 293
F000:EE8D EB 00 jmp short loc_1323 ; (EE8F)
F000:EE8F loc_1323: ; xref F000:EE8D
F000:EE8F E4 71 in al,71h ; port 71h, RTC clock/RAM data
F000:EE91 C3 retn
sub_255 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A9F3, AA47, AB46, AB4D, AB59, AD01, AD61
; CAC9, CB54, EEB8
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_256 proc near
F000:EE92 loc_1324: ; xref F000:F3DB
F000:EE92 E6 70 out 70h,al ; port 70h, RTC addr/enabl NMI
; al = 8Fh, NMI off/pwr status
F000:EE94 86 C4 xchg al,ah
F000:EE96 EB 00 jmp short loc_1325 ; (EE98)
F000:EE98 loc_1325: ; xref F000:EE96
F000:EE98 EB 00 jmp short loc_1326 ; (EE9A)
F000:EE9A loc_1326: ; xref F000:EE98
F000:EE9A E6 71 out 71h,al ; port 71h, RTC clock/RAM data
F000:EE9C 86 C4 xchg al,ah
F000:EE9E C3 retn
sub_256 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:8FF7, 91BD, 91CB, 925B, 927A, 92B0, 92BC
; 9337, 933F, 9463, 9484, 948D, 94B6, 94DA
; 94DF, 9543, 954C, 955B, 9560, 95E3, 9638
; 9834, 9839, 9894, 98FA, A8D7, A8E8, A925
; A954, A995, B1D9, B1E2, B297, B4F1, B4FA
; BD00, BD0D, BDB9, BDBE, C056, E8FA, EDE0
; EE33, EE3F, EE48, EE4D, EE52, EE77, EE7D
; F086, F08F
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_257 proc near
F000:EE9F 9C pushf ; Push flags
F000:EEA0 FA cli ; Disable interrupts
F000:EEA1 22 C0 and al,al
F000:EEA3 78 03 js short loc_1327 ; Jump if sign=1
F000:EEA5 0C 80 or al,80h
F000:EEA7 F9 stc ; Set carry flag
F000:EEA8 loc_1327: ; xref F000:EEA3
F000:EEA8 E8 FFDE call sub_255 ; (EE89)
F000:EEAB 50 push ax
F000:EEAC EB 0D jmp short loc_1329 ; (EEBB)
;▀▀▀▀ External Entry into Subroutine ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
;
; Called from: F000:91D2, 929C, 94F7, 9569, 9571, 963F, 97AD
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 294
; A95B, A99C, BDAE, BDB4, C045, C067, C06E
; C074, C07A, E903, ED94, ED9A, EE25, EE2B
; EE5C, EE60, EE64, EE85
sub_258:
F000:EEAE 9C pushf ; Push flags
F000:EEAF FA cli ; Disable interrupts
F000:EEB0 50 push ax
F000:EEB1 22 C0 and al,al
F000:EEB3 78 03 js short loc_1328 ; Jump if sign=1
F000:EEB5 0C 80 or al,80h
F000:EEB7 F9 stc ; Set carry flag
F000:EEB8 loc_1328: ; xref F000:EEB3
F000:EEB8 E8 FFD7 call sub_256 ; (EE92)
F000:EEBB loc_1329: ; xref F000:EEAC
F000:EEBB B0 0D mov al,0Dh
F000:EEBD 72 02 jc short loc_1330 ; Jump if carry Set
F000:EEBF 0C 80 or al,80h
F000:EEC1 loc_1330: ; xref F000:EEBD
F000:EEC1 E8 FFC5 call sub_255 ; (EE89)
F000:EEC4 58 pop ax
F000:EEC5 9D popf ; Pop flags
F000:EEC6 C3 retn
sub_257 endp
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 71h ▒▒▒▒▒
;
; LAN ADAPTER 1 (called by hardware 8259-2, IRQ 9)
;
; Calls interrupt 0Ah.
F000:EEC7 int_71h_LAN proc near ; xref F000:FF25
F000:EEC7 50 push ax
F000:EEC8 B0 20 mov al,20h ; ' '
F000:EECA E6 A0 out 0A0h,al ; port 0A0h, 8259-2 int command
; al = 20h, end of interrupt
F000:EECC 58 pop ax
F000:EECD CD 0A int 0Ah ; Find int from 2nd controller
F000:EECF CF iret ; Interrupt return
int_71h_LAN endp
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 75h ▒▒▒▒▒
;
; MATH CO-PROCESSOR (called by hardware 8259-2 IRQ 13)
;
; The math co-processor 80287 invokes this interrupt. Int 75h calls
; the non-maskable interrupt int 2 to halt the system (80287 is not
; used if this vector is left pointing here). Programs which use
; the 80287 must re-vector this interrupt to use the 80287.
F000:EED0 int_75h_80287 proc near ; xref F000:FF2D
F000:EED0 50 push ax
F000:EED1 32 C0 xor al,al ; Zero register
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 295
F000:EED3 E6 F0 out 0F0h,al ; port 0F0h, 80287 clear busy
F000:EED5 E8 FD4A call sub_243 ; (EC22)
F000:EED8 58 pop ax
F000:EED9 CD 02 int 2 ; NMI (parity, etc.)
F000:EEDB CF iret ; Interrupt return
int_75h_80287 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CD1C
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_259 proc near
F000:EEDC loc_1331: ; xref F000:80B5
F000:EEDC B0 00 mov al,0
F000:EEDE E6 F1 out 0F1h,al ; port 0F1h, 80287 reset
F000:EEE0 loc_1332: ; xref F000:83BB
F000:EEE0 B0 11 mov al,11h
F000:EEE2 E6 A0 out 0A0h,al ; port 0A0h, 8259-2 int command
; al = 11h, initialize, 4 byte
F000:EEE4 EB 00 jmp short loc_1333 ; (EEE6)
F000:EEE6 loc_1333: ; xref F000:EEE4
F000:EEE6 EB 00 jmp short loc_1334 ; (EEE8)
F000:EEE8 loc_1334: ; xref F000:EEE6
F000:EEE8 E6 20 out 20h,al ; port 20h, 8259-1 int command
F000:EEEA EB 00 jmp short loc_1335 ; (EEEC)
F000:EEEC loc_1335: ; xref F000:EEEA
F000:EEEC EB 00 jmp short loc_1336 ; (EEEE)
F000:EEEE loc_1336: ; xref F000:EEEC
F000:EEEE 8A C3 mov al,bl
F000:EEF0 E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
; al = 70h, inhibit IRQ12-14
F000:EEF2 EB 00 jmp short loc_1337 ; (EEF4)
F000:EEF4 loc_1337: ; xref F000:EEF2
F000:EEF4 EB 00 jmp short loc_1338 ; (EEF6)
F000:EEF6 loc_1338: ; xref F000:EEF4
F000:EEF6 8A C7 mov al,bh
F000:EEF8 E6 21 out 21h,al ; port 21h, 8259-1 int comands
; al = 8, inhibit IRQ3 rs232
F000:EEFA EB 00 jmp short loc_1339 ; (EEFC)
F000:EEFC loc_1339: ; xref F000:EEFA
F000:EEFC EB 00 jmp short loc_1340 ; (EEFE)
F000:EEFE loc_1340: ; xref F000:EEFC
F000:EEFE B0 02 mov al,2
F000:EF00 E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
; al = 2, inhibit IRQ9
F000:EF02 EB 00 jmp short loc_1341 ; (EF04)
F000:EF04 loc_1341: ; xref F000:EF02
F000:EF04 EB 00 jmp short loc_1342 ; (EF06)
F000:EF06 loc_1342: ; xref F000:EF04
F000:EF06 B0 04 mov al,4
F000:EF08 E6 21 out 21h,al ; port 21h, 8259-1 int comands
; al = 4, inhibit IRQ2
F000:EF0A EB 00 jmp short loc_1343 ; (EF0C)
F000:EF0C loc_1343: ; xref F000:EF0A
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 296
F000:EF0C EB 00 jmp short loc_1344 ; (EF0E)
F000:EF0E loc_1344: ; xref F000:EF0C
F000:EF0E B0 01 mov al,1
F000:EF10 E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
; al = 1, inhibit IRQ8 RTC
F000:EF12 EB 00 jmp short loc_1345 ; (EF14)
F000:EF14 loc_1345: ; xref F000:EF12
F000:EF14 EB 00 jmp short loc_1346 ; (EF16)
F000:EF16 loc_1346: ; xref F000:EF14
F000:EF16 E6 21 out 21h,al ; port 21h, 8259-1 int comands
; al = 1, inhibit IRQ0 timer
F000:EF18 EB 00 jmp short loc_1347 ; (EF1A)
F000:EF1A loc_1347: ; xref F000:EF18
F000:EF1A EB 00 jmp short loc_1348 ; (EF1C)
F000:EF1C loc_1348: ; xref F000:EF1A
F000:EF1C B0 FF mov al,0FFh
F000:EF1E E6 A1 out 0A1h,al ; port 0A1h, 8259-2 int comands
; al = 0FFh, inhibit interrupts
F000:EF20 EB 00 jmp short loc_1349 ; (EF22)
F000:EF22 loc_1349: ; xref F000:EF20
F000:EF22 EB 00 jmp short loc_1350 ; (EF24)
F000:EF24 loc_1350: ; xref F000:EF22
F000:EF24 E6 21 out 21h,al ; port 21h, 8259-1 int comands
F000:EF26 C3 retn
sub_259 endp
F000:EF27 0030[00] db 48 dup (0)
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:EF57 int_0Eh_entry: ; xref F000:FEFF
F000:EF57 E9 F8D7 jmp int_0Eh_floppy ; (E831)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A6CC, B560, BB79, CC2F, CC4E
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_260 proc near
F000:EF5A 50 push ax
F000:EF5B loc_1351: ; xref F000:EF79
F000:EF5B EC in al,dx ; port 1F7h, hdsk0-status reg
F000:EF5C 84 C4 test al,ah
F000:EF5E 74 1C jz short loc_1357 ; Jump if zero
F000:EF60 loc_1352: ; xref F000:EF66
F000:EF60 EB 00 jmp short loc_1353 ; (EF62)
F000:EF62 loc_1353: ; xref F000:EF60
F000:EF62 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:EF64 A8 10 test al,10h
F000:EF66 74 F8 jz loc_1352 ; Jump if zero
F000:EF68 49 dec cx
F000:EF69 74 10 jz short loc_1356 ; Jump if zero
F000:EF6B EC in al,dx ; port 1F7h, hdsk0-status reg
F000:EF6C 84 C4 test al,ah
F000:EF6E 74 0C jz short loc_1357 ; Jump if zero
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 297
F000:EF70 loc_1354: ; xref F000:EF76
F000:EF70 EB 00 jmp short loc_1355 ; (EF72)
F000:EF72 loc_1355: ; xref F000:EF70
F000:EF72 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:EF74 A8 10 test al,10h
F000:EF76 75 F8 jnz loc_1354 ; Jump if not zero
F000:EF78 49 dec cx
F000:EF79 75 E0 jnz loc_1351 ; Jump if not zero
F000:EF7B loc_1356: ; xref F000:EF69
F000:EF7B F9 stc ; Set carry flag
F000:EF7C loc_1357: ; xref F000:EF5E, EF6E
F000:EF7C 58 pop ax
F000:EF7D C3 retn
sub_260 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:A756, BB82, BBC8
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_261 proc near
F000:EF7E 50 push ax
F000:EF7F loc_1358: ; xref F000:EF9D
F000:EF7F EC in al,dx ; port 1F7h, hdsk0-status reg
F000:EF80 84 C4 test al,ah
F000:EF82 75 1C jnz short loc_1364 ; Jump if not zero
F000:EF84 loc_1359: ; xref F000:EF8A
F000:EF84 EB 00 jmp short loc_1360 ; (EF86)
F000:EF86 loc_1360: ; xref F000:EF84
F000:EF86 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:EF88 A8 10 test al,10h
F000:EF8A 74 F8 jz loc_1359 ; Jump if zero
F000:EF8C 49 dec cx
F000:EF8D 74 10 jz short loc_1363 ; Jump if zero
F000:EF8F EC in al,dx ; port 1F7h, hdsk0-status reg
F000:EF90 84 C4 test al,ah
F000:EF92 75 0C jnz short loc_1364 ; Jump if not zero
F000:EF94 loc_1361: ; xref F000:EF9A
F000:EF94 EB 00 jmp short loc_1362 ; (EF96)
F000:EF96 loc_1362: ; xref F000:EF94
F000:EF96 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:EF98 A8 10 test al,10h
F000:EF9A 75 F8 jnz loc_1361 ; Jump if not zero
F000:EF9C 49 dec cx
F000:EF9D 75 E0 jnz loc_1358 ; Jump if not zero
F000:EF9F loc_1363: ; xref F000:EF8D
F000:EF9F F9 stc ; Set carry flag
F000:EFA0 loc_1364: ; xref F000:EF82, EF92
F000:EFA0 58 pop ax
F000:EFA1 C3 retn
sub_261 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 298
;
; Called from: F000:A735, BCDB, BCE2, C9FA
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_262 proc near
F000:EFA2 50 push ax
F000:EFA3 loc_1365: ; xref F000:EFC1
F000:EFA3 F6 07 80 test byte ptr [bx],80h
F000:EFA6 75 1C jnz short loc_1372 ; Jump if not zero
F000:EFA8 loc_1366: ; xref F000:EFAE
F000:EFA8 EB 00 jmp short loc_1367 ; (EFAA)
F000:EFAA loc_1367: ; xref F000:EFA8
F000:EFAA E4 61 in al,61h ; port 61h, 8255 port B, read
F000:EFAC A8 10 test al,10h
F000:EFAE 74 F8 jz loc_1366 ; Jump if zero
F000:EFB0 49 dec cx
F000:EFB1 74 10 jz short loc_1371 ; Jump if zero
F000:EFB3 F6 07 80 test byte ptr [bx],80h
F000:EFB6 75 0C jnz short loc_1372 ; Jump if not zero
F000:EFB8 loc_1368: ; xref F000:EFBE
F000:EFB8 EB 00 jmp short loc_1369 ; (EFBA)
F000:EFBA loc_1369: ; xref F000:EFB8
F000:EFBA E4 61 in al,61h ; port 61h, 8255 port B, read
F000:EFBC A8 10 test al,10h
F000:EFBE 75 F8 jnz loc_1368 ; Jump if not zero
F000:EFC0 49 dec cx
F000:EFC1 loc_1370:
F000:EFC1 75 E0 jnz loc_1365 ; Jump if not zero
F000:EFC3 loc_1371: ; xref F000:EFB1
F000:EFC3 F9 stc ; Set carry flag
F000:EFC4 loc_1372: ; xref F000:EFA6, EFB6
F000:EFC4 58 pop ax
F000:EFC5 C3 retn
sub_262 endp
F000:EFC6 00 db 0
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ Floppy Disk Parameters █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
F000:EFC7 DF dsk_info_1 db 0DFh ; hi nibble = stepping rate in ms
; lo nibble = head unload time, ms
; xref F000:FF1F
F000:EFC8 02 dsk_info_2 db 2 ; 2nd info byte bit 0 = 0 for DMA
F000:EFC9 25 dsk_motor_delay db 25h ; Delay after use for motor off
F000:EFCA 02 dsk_sectr_bytes db 2 ; Bytes per sector 0 = 128 bytes
; 1 = 256 bytes
; 2 = 512 bytes
; 3 = 1024 bytes
F000:EFCB 12 dsk_sector_trac db 12h ; Number of sectors per track
F000:EFCC 1B dsk_head_gap db 1Bh ; Gap Length
F000:EFCD FF dsk_data_length db 0FFh ; Data Length
F000:EFCE 54 dsk_format_gap db 54h ; Format Gap Length
F000:EFCF F6 dsk_format_byte db 0F6h ; Format write byte
F000:EFD0 0F dsk_settlg_time db 0Fh ; Head load time, in milliseconds
F000:EFD1 08 dsk_startup_tim db 8 ; Motor startup wait time * .125ms
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 299
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:EFD2 int_17h_entry: ; xref F000:FF11
F000:EFD2 E9 0887 jmp int_17h_printer ; (F85C)
F000:EFD5 4A 23 52 0A 13 24 db 4Ah, 23h, 52h, 0Ah, 13h, 24h
F000:EFDB 24 34 A4 A4 0A 73 db 24h, 34h, 0A4h, 0A4h, 0Ah, 73h
F000:EFE1 34 AC 4C 84 2C A4 db 34h, 0ACh, 4Ch, 84h, 2Ch, 0A4h
F000:EFE7 0A 53 7C 24 7A 0A db 0Ah, 53h, 7Ch, 24h, 7Ah, 0Ah
F000:EFED 92 D2 CA B2 6A 0A db 92h, 0D2h, 0CAh, 0B2h, 6Ah, 0Ah
F000:EFF3 92 D2 CA BA 71 59 db 92h, 0D2h, 0CAh, 0BAh, 71h, 59h
F000:EFF9 B2 D2 8A 0A 0A BB db 0B2h, 0D2h, 8Ah, 0Ah, 0Ah, 0BBh
F000:EFFF 14 6C 6C 34 D4 0A db 14h, 6Ch, 6Ch, 34h, 0D4h, 0Ah
F000:F005 9B 84 14 2C 6A 0A db 9Bh, 84h, 14h, 2Ch, 6Ah, 0Ah
F000:F00B B3 8C 8C 34 9C 0A db 0B3h, 8Ch, 8Ch, 34h, 9Ch, 0Ah
F000:F011 73 84 7C AC 24 6C db 73h, 84h, 7Ch, 0ACh, 24h, 6Ch
F000:F017 14 54 9C 6A 71 59 db 14h, 54h, 9Ch, 6Ah, 71h, 59h
F000:F01D 0A 7B 34 C4 0A 5B db 0Ah, 7Bh, 34h, 0C4h, 0Ah, 5Bh
F000:F023 34 9C A4 34 D4 0A db 34h, 9Ch, 0A4h, 34h, 0D4h, 0Ah
F000:F029 72 0A 8A C2 8A AA db 72h, 0Ah, 8Ah, 0C2h, 8Ah, 0AAh
F000:F02F A2 6A 71 59 4A 9A db 0A2h, 6Ah, 71h, 59h, 4Ah, 9Ah
F000:F035 8A 92 52 0A C2 AA db 8Ah, 92h, 52h, 0Ah, 0C2h, 0AAh
F000:F03B AA 72 D2 92 9A BA db 0AAh, 72h, 0D2h, 92h, 9Ah, 0BAh
F000:F041 7A db 7Ah
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:9305
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_263 proc near
F000:F042 BE E300 mov si,0E300h
F000:F045 loc_1373: ; xref F000:F051
F000:F045 2E: 8A 04 mov al,cs:[si]
F000:F048 46 inc si
F000:F049 0A C0 or al,al ; Zero ?
F000:F04B 74 06 jz short loc_ret_1374 ; Jump if zero
F000:F04D B4 0E mov ah,0Eh
F000:F04F CD 10 int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
F000:F051 EB F2 jmp short loc_1373 ; (F045)
F000:F053 loc_ret_1374: ; xref F000:F04B
F000:F053 C3 retn
sub_263 endp
F000:F054 0011[00] db 17 dup (0)
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:F065 int_10h_entry: ; xref F000:FF03
F000:F065 E9 94D4 jmp int_10h_video ; (853C)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 300
; SUBROUTINE
;
; Called from: F000:8E00, 8E27, 934E, 9357, 944A, 9453, 96E9
; 9725, 9793, 97B9, 97BF, A268, A57B, A6FB
; B5F7, B6ED, B9B0, BB6E, BBA6, BBBE, BC8A
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_264 proc near
F000:F068 50 push ax
F000:F069 83 C1 02 add cx,2
F000:F06C loc_1375: ; xref F000:F072, F080
F000:F06C EB 00 jmp short loc_1376 ; (F06E)
F000:F06E loc_1376: ; xref F000:F06C
F000:F06E E4 61 in al,61h ; port 61h, 8255 port B, read
F000:F070 A8 10 test al,10h
F000:F072 74 F8 jz loc_1375 ; Jump if zero
F000:F074 49 dec cx
F000:F075 74 0B jz short loc_1379 ; Jump if zero
F000:F077 loc_1377: ; xref F000:F07D
F000:F077 EB 00 jmp short loc_1378 ; (F079)
F000:F079 loc_1378: ; xref F000:F077
F000:F079 E4 61 in al,61h ; port 61h, 8255 port B, read
F000:F07B A8 10 test al,10h
F000:F07D 75 F8 jnz loc_1377 ; Jump if not zero
F000:F07F 49 dec cx
F000:F080 75 EA jnz loc_1375 ; Jump if not zero
F000:F082 loc_1379: ; xref F000:F075
F000:F082 58 pop ax
F000:F083 C3 retn
sub_264 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:B017, B038, B307, B7F7, B8B3, BA2B
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_265 proc near
F000:F084 B0 0E mov al,0Eh
F000:F086 E8 FE16 call sub_257 ; (EE9F)
F000:F089 A8 C0 test al,0C0h
F000:F08B 75 15 jnz short loc_ret_1382 ; Jump if not zero
F000:F08D B0 10 mov al,10h
F000:F08F E8 FE0D call sub_257 ; (EE9F)
F000:F092 0A D2 or dl,dl ; Zero ?
F000:F094 75 08 jnz short loc_1381 ; Jump if not zero
F000:F096 90 nop ;
F000:F097 90 nop ;
F000:F098 90 nop ;
F000:F099 90 nop ;
F000:F09A 90 nop ;
F000:F09B C0 E8 04 shr al,4 ; Shift w/zeros fill
F000:F09E loc_1381: ; xref F000:F094
F000:F09E 24 0F and al,0Fh
F000:F0A0 3B E4 cmp sp,sp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 301
F000:F0A2 loc_ret_1382: ; xref F000:F08B
F000:F0A2 C3 retn
sub_265 endp
F000:F0A3 00 db 0
; █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
; █ Video Hardware Registers █
; █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
F000:F0A4 38 28 2D 0A 1F 06 video_hdwr_tbl1 db 38h, 28h, 2Dh, 0Ah, 1Fh, 6 ; mode CGA 40 columns x 25 lines
; xref F000:FF1D
F000:F0AA 19 1C 02 07 06 07 db 19h, 1Ch, 2, 7, 6, 7
F000:F0B0 00 00 00 00 db 0, 0, 0, 0
F000:F0B4 71 50 5A 0A 1F 06 video_hdrw_tbl2 db 71h, 50h, 5Ah, 0Ah, 1Fh, 6 ; mode CGA 80 columns x 25 lines
F000:F0BA 19 1C 02 07 06 07 db 19h, 1Ch, 2, 7, 6, 7
F000:F0C0 00 00 00 00 db 0, 0, 0, 0
F000:F0C4 38 28 2D 0A 7F 06 video_hdwr_tbl3 db 38h, 28h, 2Dh, 0Ah, 7Fh, 6 ; mode CGA graphics
F000:F0CA 64 70 02 01 06 07 db 64h, 70h, 2, 1, 6, 7
F000:F0D0 00 00 00 00 db 0, 0, 0, 0
F000:F0D4 61 50 52 0F 19 06 video_hdwr_tbl4 db 61h, 50h, 52h, 0Fh, 19h, 6 ; mode MDA 80 columns x 25 lines
F000:F0DA 19 19 02 0D 0B 0C db 19h, 19h, 2, 0Dh, 0Bh, 0Ch
F000:F0E0 00 00 00 00 db 0, 0, 0, 0
F000:F0E4 0800 video_buf_size1 dw 800h ; Video buffer bytes CGA 40x25
F000:F0E6 1000 video_buf_size2 dw 1000h ; Video buffer bytes CGA 80x25
F000:F0E8 4000 video_buf_size3 dw 4000h ; Video buffer bytes CGA Graphics
F000:F0EA 4000 video_buf_size4 dw 4000h ; Video buffer bytes CGA Graphics
F000:F0EC 28 28 50 50 28 28 video_columntbl db 28h, 28h, 50h, 50h, 28h, 28h ; Video columns per modes 0-7
F000:F0F2 50 50 db 50h, 50h
F000:F0F4 2C 28 2D 29 2A 2E video_hdwr_mode db 2Ch, 28h, 2Dh, 29h, 2Ah, 2Eh ; Video hardware modes (0-7)
F000:F0FA 1E 29 db 1Eh, 29h
F000:F0FC 03 03 05 05 03 03 db 3, 3, 5, 5, 3, 3
F000:F102 03 04 01 03 02 FF db 3, 4, 1, 3, 2, 0FFh
F000:F108 03 17 04 00 05 7F db 3, 17h, 4, 0, 5, 7Fh
F000:F10E 06 00 07 FF 08 FD db 6, 0, 7, 0FFh, 8, 0FDh
F000:F114 09 FF 0A FD 0B 00 db 9, 0FFh, 0Ah, 0FDh, 0Bh, 0
F000:F11A 0C 00 0D 00 0E 00 db 0Ch, 0, 0Dh, 0, 0Eh, 0
F000:F120 0F 00 10 00 11 00 db 0Fh, 0, 10h, 0, 11h, 0
F000:F126 12 00 13 00 14 26 db 12h, 0, 13h, 0, 14h, 26h
F000:F12C 81 FC 82 00 84 00 db 81h, 0FCh, 82h, 0, 84h, 0
F000:F132 89 0E F8 03 87 F8 db 89h, 0Eh, 0F8h, 3, 87h, 0F8h
F000:F138 02 87 BC 03 83 F0 db 2, 87h, 0BCh, 3, 83h, 0F0h
F000:F13E 03 87 F0 01 07 00 db 3, 87h, 0F0h, 1, 7, 0
F000:F144 00 00 00 00 00 BC db 0, 0, 0, 0, 0, 0BCh
F000:F14A 03 78 03 BC 03 78 db 3, 78h, 3, 0BCh, 3, 78h
F000:F150 02 BC 03 78 03 BC db 2, 0BCh, 3, 78h, 3, 0BCh
F000:F156 03 00 00 db 3, 0, 0
F000:F159 03F8 data_169 dw 3F8h ; Data table (indexed access)
; xref F000:F5A0, F5C7
F000:F15B F8 02 F8 02 E8 03 db 0F8h, 2, 0F8h, 2, 0E8h, 3
F000:F161 F8 03 E8 03 E8 03 db 0F8h, 3, 0E8h, 3, 0E8h, 3
F000:F167 E8 02 F8 03 F8 02 db 0E8h, 2, 0F8h, 3, 0F8h, 2
F000:F16D F8 02 E8 02 F8 03 db 0F8h, 2, 0E8h, 2, 0F8h, 3
F000:F173 E8 02 E8 02 00 00 db 0E8h, 2, 0E8h, 2, 0, 0
F000:F179 F8 03 F8 02 F8 02 db 0F8h, 3, 0F8h, 2, 0F8h, 2
F000:F17F E8 03 F8 03 E8 03 db 0E8h, 3, 0F8h, 3, 0E8h, 3
F000:F185 E8 03 00 00 F8 03 db 0E8h, 3, 0, 0, 0F8h, 3
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 302
F000:F18B F8 02 F8 02 00 00 db 0F8h, 2, 0F8h, 2, 0, 0
F000:F191 F8 03 00 db 0F8h, 3, 0
F000:F194 0007[00] db 7 dup (0)
F000:F19B C0 00 C0 04 C0 0C db 0C0h, 0, 0C0h, 4, 0C0h, 0Ch
F000:F1A1 C5 00 E0 01 C5 05 db 0C5h, 0, 0E0h, 1, 0C5h, 5
F000:F1A7 C5 0D C5 04 C0 05 db 0C5h, 0Dh, 0C5h, 4, 0C0h, 5
F000:F1AD E0 07 C5 0F C5 0C db 0E0h, 7, 0C5h, 0Fh, 0C5h, 0Ch
F000:F1B3 C0 0D C0 0F E0 11 db 0C0h, 0Dh, 0C0h, 0Fh, 0E0h, 11h
F000:F1B9 C3 00 E2 01 C4 05 db 0C3h, 0, 0E2h, 1, 0C4h, 5
F000:F1BF C4 0D E3 01 E0 02 db 0C4h, 0Dh, 0E3h, 1, 0E0h, 2
F000:F1C5 E3 06 E3 0E C3 05 db 0E3h, 6, 0E3h, 0Eh, 0C3h, 5
F000:F1CB E2 06 E0 08 C5 0F db 0E2h, 6, 0E0h, 8, 0C5h, 0Fh
F000:F1D1 C3 0D E2 0E C0 0F db 0C3h, 0Dh, 0E2h, 0Eh, 0C0h, 0Fh
F000:F1D7 locloop_1383:
F000:F1D7 E0 12 loopnz short locloop_1384 ; Loop if zf=0, cx>0
F000:F1D9 C2 C204 retn 0C204h
F000:F1DC 05 E2 07 C4 0F C1 db 5, 0E2h, 7, 0C4h, 0Fh, 0C1h
F000:F1E2 05 E0 06 E2 08 C4 db 5, 0E0h, 6, 0E2h, 8, 0C4h
F000:F1E8 0F E3 07 db 0Fh, 0E3h, 7
F000:F1EB locloop_1384: ; xref F000:F1D7
F000:F1EB E3 08 jcxz short loc_1385 ; Jump if cx=0
F000:F1ED E0 0A loopnz short locloop_1386 ; Loop if zf=0, cx>0
F000:F1EF E3 10 jcxz short loc_1387 ; Jump if cx=0
F000:F1F1 C3 retn
F000:F1F2 0F C3 0F db 0Fh, 0C3h, 0Fh
F000:F1F5 loc_1385: ; xref F000:F1EB
F000:F1F5 E2 10 ;* loop short locloop_1388 ;*Loop if cx > 0
F000:F1F5 E2 10 db 0E2h, 10h
F000:F1F7 E0 14 loopnz short locloop_1389 ; Loop if zf=0, cx>0
F000:F1F9 locloop_1386: ; xref F000:F1ED
F000:F1F9 C3 retn
F000:F1FA 0C C2 0D C2 0F E2 db 0Ch, 0C2h, 0Dh, 0C2h, 0Fh, 0E2h
F000:F200 11 db 11h
F000:F201 loc_1387: ; xref F000:F1EF
F000:F201 C1 0D E0 ror word ptr [di],0E0h ; Rotate
F000:F204 0E push cs
F000:F205 C2 E20F retn 0E20Fh
F000:F208 12 C1 0F C1 0F db 12h, 0C1h, 0Fh, 0C1h, 0Fh
F000:F20D locloop_1389: ; xref F000:F1F7
F000:F20D E0 10 ;* loopnz short locloop_1390 ;*Loop if zf=0, cx>0
F000:F20D E0 10 db 0E0h, 10h
F000:F20F E2 14 ;* loop short locloop_1392 ;*Loop if cx > 0
F000:F20F E2 14 db 0E2h, 14h
F000:F211 E1 11 loopz short locloop_1391 ; Loop if zf=1, cx>0
F000:F213 E3 12 jcxz short loc_1393 ; Jump if cx=0
F000:F215 E3 14 ;* jcxz short loc_1394 ;*Jump if cx=0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 303
F000:F215 E3 14 db 0E3h, 14h
F000:F217 E0 16 loopnz short $+18h ; Loop if zf=0, cx>0
F000:F219 CF iret ; Interrupt return
F000:F21A 00 E6 01 C6 05 db 0, 0E6h, 1, 0C6h, 5
F000:F21F locloop_1390: ; xref F000:F20D
F000:F21F C6 0D E7 01 E5 db 0C6h, 0Dh, 0E7h, 1, 0E5h
F000:F224 locloop_1391: ; xref F000:F211
F000:F224 02 E7 add ah,bh
F000:F226 06 push es
F000:F227 loc_1393: ; xref F000:F213
F000:F227 E7 0E out 0Eh,ax ; port 0Eh, DMA-1 clr mask reg
F000:F229 C7 05 06E6 mov word ptr [di],6E6h
F000:F22D E5 08 in ax,8 ; port 8, DMA-1 status reg
F000:F22F C5 0F lds cx,dword ptr [bx] ; Load 32 bit ptr
F000:F231 C7 0D E6 0E C0 0F db 0C7h, 0Dh, 0E6h, 0Eh, 0C0h, 0Fh
F000:F237 E5 12 EA 01 EA 02 db 0E5h, 12h, 0EAh, 1, 0EAh, 2
F000:F23D EA 06 EA 0E EB 02 db 0EAh, 6, 0EAh, 0Eh, 0EBh, 2
F000:F243 F0 03 E1 06 E1 0E db 0F0h, 3, 0E1h, 6, 0E1h, 0Eh
F000:F249 EE 06 E2 06 FA 09 db 0EEh, 6, 0E2h, 6, 0FAh, 9
F000:F24F C5 0F EE 0E EE 0E db 0C5h, 0Fh, 0EEh, 0Eh, 0EEh, 0Eh
F000:F255 C0 0F FA 13 CA 05 db 0C0h, 0Fh, 0FAh, 13h, 0CAh, 5
F000:F25B E9 06 E8 08 C4 0F db 0E9h, 6, 0E8h, 8, 0C4h, 0Fh
F000:F261 ED 06 E0 06 FD 09 db 0EDh, 6, 0E0h, 6, 0FDh, 9
F000:F267 C4 0F EB 08 F9 09 db 0C4h, 0Fh, 0EBh, 8, 0F9h, 9
F000:F26D E0 0A E3 10 C3 0F db 0E0h, 0Ah, 0E3h, 10h, 0C3h, 0Fh
F000:F273 C3 0F E2 10 E0 14 db 0C3h, 0Fh, 0E2h, 10h, 0E0h, 14h
F000:F279 CA 0D E9 0E C2 0F db 0CAh, 0Dh, 0E9h, 0Eh, 0C2h, 0Fh
F000:F27F E8 12 EC 0E E0 0E db 0E8h, 12h, 0ECh, 0Eh, 0E0h, 0Eh
F000:F285 CB 0F FD 13 CB 0F db 0CBh, 0Fh, 0FDh, 13h, 0CBh, 0Fh
F000:F28B CB 0F E0 10 E2 14 db 0CBh, 0Fh, 0E0h, 10h, 0E2h, 14h
F000:F291 EB 12 F6 13 E1 14 db 0EBh, 12h, 0F6h, 13h, 0E1h, 14h
F000:F297 E0 16 CF 04 C9 05 db 0E0h, 16h, 0CFh, 4, 0C9h, 5
F000:F29D E9 07 C6 0F CC 05 db 0E9h, 7, 0C6h, 0Fh, 0CCh, 5
F000:F2A3 E5 06 E6 08 C6 0F db 0E5h, 6, 0E6h, 8, 0C6h, 0Fh
F000:F2A9 E7 07 db 0E7h, 7
F000:F2AB locloop_1395:
F000:F2AB E7 08 out 8,ax ; port 8, DMA-1 command reg
F000:F2AD E8 E70A call sub_233 ; (D9BA)
F000:F2B0 10 C7 adc bh,al
F000:F2B2 0F C7 0F E6 10 E5 db 0Fh, 0C7h, 0Fh, 0E6h, 10h, 0E5h
F000:F2B8 14 CE 05 E8 06 E9 db 14h, 0CEh, 5, 0E8h, 6, 0E9h
F000:F2BE 08 C6 0F EB 06 E5 db 8, 0C6h, 0Fh, 0EBh, 6, 0E5h
F000:F2C4 06 F1 09 C6 0F ED db 6, 0F1h, 9, 0C6h, 0Fh, 0EDh
F000:F2CA 08 F8 09 E5 0A E7 db 8, 0F8h, 9, 0E5h, 0Ah, 0E7h
F000:F2D0 10 C7 0F C7 0F E6 db 10h, 0C7h, 0Fh, 0C7h, 0Fh, 0E6h
F000:F2D6 10 E5 14 EA 07 EA db 10h, 0E5h, 14h, 0EAh, 7, 0EAh
F000:F2DC 08 E9 0A EA 10 EE db 8, 0E9h, 0Ah, 0EAh, 10h, 0EEh
F000:F2E2 08 F0 09 E8 0A EA db 8, 0F0h, 9, 0E8h, 0Ah, 0EAh
F000:F2E8 10 ED 0A EF 0A F0 db 10h, 0EDh, 0Ah, 0EFh, 0Ah, 0F0h
F000:F2EE 0B E1 10 EE 10 EE db 0Bh, 0E1h, 10h, 0EEh, 10h, 0EEh
F000:F2F4 10 E3 10 FA 15 CA db 10h, 0E3h, 10h, 0FAh, 15h, 0CAh
F000:F2FA 0F CA 0F E9 10 E8 db 0Fh, 0CAh, 0Fh, 0E9h, 10h, 0E8h
F000:F300 14 CA 0F CA 0F E9 db 14h, 0CAh, 0Fh, 0CAh, 0Fh, 0E9h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 304
F000:F306 10 E8 14 ED 10 ED db 10h, 0E8h, 14h, 0EDh, 10h, 0EDh
F000:F30C 10 E0 10 FD 15 EB db 10h, 0E0h, 10h, 0FDh, 15h, 0EBh
F000:F312 14 EB 14 F9 15 E0 db 14h, 0EBh, 14h, 0F9h, 15h, 0E0h
F000:F318 16 C6 0C C9 0D C9 db 16h, 0C6h, 0Ch, 0C9h, 0Dh, 0C9h
F000:F31E 0F E9 11 CC 0D E5 db 0Fh, 0E9h, 11h, 0CCh, 0Dh, 0E5h
F000:F324 0E C9 0F E6 12 CC db 0Eh, 0C9h, 0Fh, 0E6h, 12h, 0CCh
F000:F32A 0F CC 0F E5 10 E6 db 0Fh, 0CCh, 0Fh, 0E5h, 10h, 0E6h
F000:F330 14 EC 11 E7 12 E7 db 14h, 0ECh, 11h, 0E7h, 12h, 0E7h
F000:F336 14 E7 16 CE 0D E8 db 14h, 0E7h, 16h, 0CEh, 0Dh, 0E8h
F000:F33C 0E C9 0F E9 12 EB db 0Eh, 0C9h, 0Fh, 0E9h, 12h, 0EBh
F000:F342 0E EB 0E C9 0F FB db 0Eh, 0EBh, 0Eh, 0C9h, 0Fh, 0FBh
F000:F348 13 CC 0F CC 0F E5 db 13h, 0CCh, 0Fh, 0CCh, 0Fh, 0E5h
F000:F34E 10 E6 14 ED 12 F8 db 10h, 0E6h, 14h, 0EDh, 12h, 0F8h
F000:F354 13 E7 14 E6 16 CE db 13h, 0E7h, 14h, 0E6h, 16h, 0CEh
F000:F35A 0F CF 0F E8 10 E9 db 0Fh, 0CFh, 0Fh, 0E8h, 10h, 0E9h
F000:F360 14 CE 0F CE 0F E8 db 14h, 0CEh, 0Fh, 0CEh, 0Fh, 0E8h
F000:F366 10 E9 14 EB 10 EB db 10h, 0E9h, 14h, 0EBh, 10h, 0EBh
F000:F36C 10 E5 10 FB 15 ED db 10h, 0E5h, 10h, 0FBh, 15h, 0EDh
F000:F372 14 EC 14 F8 15 E6 db 14h, 0ECh, 14h, 0F8h, 15h, 0E6h
F000:F378 16 EE 11 EA 12 EA db 16h, 0EEh, 11h, 0EAh, 12h, 0EAh
F000:F37E 14 EA 16 EE 12 FF db 14h, 0EAh, 16h, 0EEh, 12h, 0FFh
F000:F384 13 EA 14 E8 16 EE db 13h, 0EAh, 14h, 0E8h, 16h, 0EEh
F000:F38A 14 EE 14 F0 15 EA db 14h, 0EEh, 14h, 0F0h, 15h, 0EAh
F000:F390 16 EB 16 EB 16 EB db 16h, 0EBh, 16h, 0EBh, 16h, 0EBh
F000:F396 16 F0 17 10 00 20 db 16h, 0F0h, 17h, 10h, 0, 20h
F000:F39C 00 30 00 40 00 40 db 0, 30h, 0, 40h, 0, 40h
F000:F3A2 00 50 00 60 00 80 db 0, 50h, 0, 60h, 0, 80h
F000:F3A8 00 90 00 A0 00 C0 db 0, 90h, 0, 0A0h, 0, 0C0h
F000:F3AE 00 00 01 00 01 10 db 0, 0, 1, 0, 1, 10h
F000:F3B4 01 20 01 40 01 80 db 1, 20h, 1, 40h, 1, 80h
F000:F3BA 01 00 02 10 02 20 db 1, 0, 2, 10h, 2, 20h
F000:F3C0 02 40 02 80 02 00 db 2, 40h, 2, 80h, 2, 0
F000:F3C6 03 FF 03 F7 C5 00 db 3, 0FFh, 3, 0F7h, 0C5h, 0
F000:F3CC 40 74 05 E6 F9 E9 db 40h, 74h, 5, 0E6h, 0F9h, 0E9h
F000:F3D2 CF 8F db 0CFh, 8Fh
F000:F3D4 loc_1397:
F000:F3D4 B8 00C0 mov ax,0C0h
F000:F3D7 90 nop ;
F000:F3D8 BC F3DE mov sp,0F3DEh
F000:F3DB E9 FAB4 jmp loc_1324 ; (EE92)
F000:F3DE E0 F3 E6 FB B8 12 db 0E0h, 0F3h, 0E6h, 0FBh, 0B8h, 12h
F000:F3E4 00 90 BC EC F3 E9 db 0, 90h, 0BCh, 0ECh, 0F3h, 0E9h
F000:F3EA 7C 03 EE F3 B0 00 db 7Ch, 3, 0EEh, 0F3h, 0B0h, 0
F000:F3F0 BC F6 F3 E9 83 03 db 0BCh, 0F6h, 0F3h, 0E9h, 83h, 3
F000:F3F6 F8 F3 24 10 74 02 db 0F8h, 0F3h, 24h, 10h, 74h, 2
F000:F3FC B0 80 8A D8 B8 B8 db 0B0h, 80h, 8Ah, 0D8h, 0B8h, 0B8h
F000:F402 B8 90 BC 0A F4 E9 db 0B8h, 90h, 0BCh, 0Ah, 0F4h, 0E9h
F000:F408 7F FA 0C F4 24 7F db 7Fh, 0FAh, 0Ch, 0F4h, 24h, 7Fh
F000:F40E 0A C3 86 C4 BC 18 db 0Ah, 0C3h, 86h, 0C4h, 0BCh, 18h
F000:F414 F4 E9 7A FA 1A F4 db 0F4h, 0E9h, 7Ah, 0FAh, 1Ah, 0F4h
F000:F41A F6 C4 08 75 0F B0 db 0F6h, 0C4h, 8, 75h, 0Fh, 0B0h
F000:F420 8E 90 BC 28 F4 E9 db 8Eh, 90h, 0BCh, 28h, 0F4h, 0E9h
F000:F426 61 FA 2A F4 A8 C0 db 61h, 0FAh, 2Ah, 0F4h, 0A8h, 0C0h
F000:F42C 74 03 E9 8B 00 33 db 74h, 3, 0E9h, 8Bh, 0, 33h
F000:F432 D2 33 C0 B7 C1 8A db 0D2h, 33h, 0C0h, 0B7h, 0C1h, 8Ah
F000:F438 C7 90 BC 40 F4 E9 db 0C7h, 90h, 0BCh, 40h, 0F4h, 0E9h
F000:F43E 49 FA 42 F4 03 D0 db 49h, 0FAh, 42h, 0F4h, 3, 0D0h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 305
F000:F444 FE C7 80 FF FE 75 db 0FEh, 0C7h, 80h, 0FFh, 0FEh, 75h
F000:F44A EC 8A C7 90 BC 54 db 0ECh, 8Ah, 0C7h, 90h, 0BCh, 54h
F000:F450 F4 E9 35 FA 56 F4 db 0F4h, 0E9h, 35h, 0FAh, 56h, 0F4h
F000:F456 8A E0 B0 FF BC 60 db 8Ah, 0E0h, 0B0h, 0FFh, 0BCh, 60h
F000:F45C F4 E9 29 FA 62 F4 db 0F4h, 0E9h, 29h, 0FAh, 62h, 0F4h
F000:F462 3B C2 75 04 0B D2 db 3Bh, 0C2h, 75h, 4, 0Bh, 0D2h
F000:F468 75 03 EB 50 90 B9 db 75h, 3, 0EBh, 50h, 90h, 0B9h
F000:F46E 17 00 BE 04 F1 B7 db 17h, 0, 0BEh, 4, 0F1h, 0B7h
F000:F474 C1 2E 8A 24 46 46 db 0C1h, 2Eh, 8Ah, 24h, 46h, 46h
F000:F47A 8A C7 FE C7 BC 84 db 8Ah, 0C7h, 0FEh, 0C7h, 0BCh, 84h
F000:F480 F4 E9 05 FA 86 F4 db 0F4h, 0E9h, 5, 0FAh, 86h, 0F4h
F000:F486 86 C4 BC 8E F4 E9 db 86h, 0C4h, 0BCh, 8Eh, 0F4h, 0E9h
F000:F48C DA 02 90 F4 E2 E3 db 0DAh, 2, 90h, 0F4h, 0E2h, 0E3h
F000:F492 B9 17 00 B4 69 B7 db 0B9h, 17h, 0, 0B4h, 69h, 0B7h
F000:F498 D9 8A C7 FE C7 90 db 0D9h, 8Ah, 0C7h, 0FEh, 0C7h, 90h
F000:F49E BC A4 F4 E9 E5 F9 db 0BCh, 0A4h, 0F4h, 0E9h, 0E5h, 0F9h
F000:F4A4 A6 F4 86 C4 BC AE db 0A6h, 0F4h, 86h, 0C4h, 0BCh, 0AEh
F000:F4AA F4 E9 D8 02 B0 F4 db 0F4h, 0E9h, 0D8h, 2, 0B0h, 0F4h
F000:F4B0 86 C4 FE C4 E2 E3 db 86h, 0C4h, 0FEh, 0C4h, 0E2h, 0E3h
F000:F4B6 E9 59 DA E9 13 FF db 0E9h, 59h, 0DAh, 0E9h, 13h, 0FFh
F000:F4BC loc_1398:
F000:F4BC B9 0017 mov cx,17h
F000:F4BF BE F104 mov si,0F104h
F000:F4C2 2E: 8B 04 mov ax,cs:[si]
F000:F4C5 46 inc si
F000:F4C6 46 inc si
F000:F4C7 3C 07 cmp al,7
F000:F4C9 74 04 je short loc_1399 ; Jump if equal
F000:F4CB 3C 09 cmp al,9
F000:F4CD 75 08 jne short loc_1400 ; Jump if not equal
F000:F4CF loc_1399: ; xref F000:F4C9
F000:F4CF 0A DB or bl,bl ; Zero ?
F000:F4D1 78 12 js short loc_1402 ; Jump if sign=1
F000:F4D3 B4 FE mov ah,0FEh
F000:F4D5 EB 0E jmp short loc_1402 ; (F4E5)
F000:F4D7 loc_1400: ; xref F000:F4CD
F000:F4D7 3C 08 cmp al,8
F000:F4D9 74 04 je short loc_1401 ; Jump if equal
F000:F4DB 3C 0A cmp al,0Ah
F000:F4DD 75 06 jne short loc_1402 ; Jump if not equal
F000:F4DF loc_1401: ; xref F000:F4D9
F000:F4DF 0A DB or bl,bl ; Zero ?
F000:F4E1 78 02 js short loc_1402 ; Jump if sign=1
F000:F4E3 B4 F7 mov ah,0F7h
F000:F4E5 loc_1402: ; xref F000:F4D1, F4D5, F4DD, F4E1
F000:F4E5 90 nop ;
F000:F4E6 BC F4EC mov sp,0F4ECh
F000:F4E9 E9 027C jmp loc_1434 ; (F768)
F000:F4EC EE F4 E2 D2 B9 17 db 0EEh, 0F4h, 0E2h, 0D2h, 0B9h, 17h
F000:F4F2 00 BE 32 F1 B0 69 db 0, 0BEh, 32h, 0F1h, 0B0h, 69h
F000:F4F8 2E 8A 24 46 3C 69 db 2Eh, 8Ah, 24h, 46h, 3Ch, 69h
F000:F4FE 75 02 8A DC db 75h, 2, 8Ah, 0DCh
F000:F502 loc_1403:
F000:F502 3C 6A cmp al,6Ah ; 'j'
F000:F504 75 02 jne short loc_1404 ; Jump if not equal
F000:F506 8A FC mov bh,ah
F000:F508 loc_1404: ; xref F000:F504
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 306
F000:F508 BC F50E mov sp,0F50Eh
F000:F50B E9 0278 jmp loc_1443 ; (F786)
F000:F50E 10 F5 FE C0 E2 E4 db 10h, 0F5h, 0FEh, 0C0h, 0E2h, 0E4h
F000:F514 33 C0 BA 78 02 90 db 33h, 0C0h, 0BAh, 78h, 2, 90h
F000:F51A BC 20 F5 E9 12 02 db 0BCh, 20h, 0F5h, 0E9h, 12h, 2
F000:F520 22 F5 BA 78 03 90 db 22h, 0F5h, 0BAh, 78h, 3, 90h
F000:F526 BC 2C F5 E9 06 02 db 0BCh, 2Ch, 0F5h, 0E9h, 6, 2
F000:F52C 2E F5 BA BC 03 90 db 2Eh, 0F5h, 0BAh, 0BCh, 3, 90h
F000:F532 BC 38 F5 E9 FA 01 db 0BCh, 38h, 0F5h, 0E9h, 0FAh, 1
F000:F538 3A F5 32 C0 86 C4 db 3Ah, 0F5h, 32h, 0C0h, 86h, 0C4h
F000:F53E 8B F0 D1 E6 2E 8B db 8Bh, 0F0h, 0D1h, 0E6h, 2Eh, 8Bh
F000:F544 84 49 F1 0B C0 74 db 84h, 49h, 0F1h, 0Bh, 0C0h, 74h
F000:F54A 1C 8A C8 B0 72 90 db 1Ch, 8Ah, 0C8h, 0B0h, 72h, 90h
F000:F550 BC 56 F5 E9 30 02 db 0BCh, 56h, 0F5h, 0E9h, 30h, 2
F000:F556 58 F5 8A E1 B0 71 db 58h, 0F5h, 8Ah, 0E1h, 0B0h, 71h
F000:F55C BC 62 F5 E9 24 02 db 0BCh, 62h, 0F5h, 0E9h, 24h, 2
F000:F562 64 F5 80 CB 10 33 db 64h, 0F5h, 80h, 0CBh, 10h, 33h
F000:F568 C0 BA EA 02 EC A8 db 0C0h, 0BAh, 0EAh, 2, 0ECh, 0A8h
F000:F56E F8 75 03 80 CC 08 db 0F8h, 75h, 3, 80h, 0CCh, 8
F000:F574 loc_1405:
F000:F574 BA 03EA mov dx,3EAh
F000:F577 EC in al,dx ; port 3EAh
F000:F578 A8 F8 test al,0F8h
F000:F57A 75 03 jnz short loc_1406 ; Jump if not zero
F000:F57C 80 CC 04 or ah,4
F000:F57F loc_1406: ; xref F000:F57A
F000:F57F BA 02FA mov dx,2FAh
F000:F582 EC in al,dx ; port 2FAh, RS232-2 int identy
F000:F583 A8 F8 test al,0F8h
F000:F585 75 03 jnz short loc_1407 ; Jump if not zero
F000:F587 80 CC 02 or ah,2
F000:F58A loc_1407: ; xref F000:F585
F000:F58A BA 03FA mov dx,3FAh
F000:F58D EC in al,dx ; port 3FAh, RS232-1 int identy
F000:F58E A8 F8 test al,0F8h
F000:F590 75 03 jnz short loc_1408 ; Jump if not zero
F000:F592 80 CC 01 or ah,1
F000:F595 loc_1408: ; xref F000:F590
F000:F595 32 C0 xor al,al ; Zero register
F000:F597 86 C4 xchg al,ah
F000:F599 8B F0 mov si,ax
F000:F59B D1 E6 shl si,1 ; Shift w/zeros fill
F000:F59D D1 E6 shl si,1 ; Shift w/zeros fill
F000:F59F 2E: 8B 84 F159 mov ax,cs:data_169[si] ; (F000:F159=3F8h)
F000:F5A4 0B C0 or ax,ax ; Zero ?
F000:F5A6 74 1B jz short loc_1409 ; Jump if zero
F000:F5A8 8A C8 mov cl,al
F000:F5AA B0 6C mov al,6Ch ; 'l'
F000:F5AC BC F5B2 mov sp,0F5B2h
F000:F5AF E9 01D4 jmp loc_1443 ; (F786)
F000:F5B2 B4 F5 8A E1 B0 6B db 0B4h, 0F5h, 8Ah, 0E1h, 0B0h, 6Bh
F000:F5B8 BC BE F5 E9 C8 01 db 0BCh, 0BEh, 0F5h, 0E9h, 0C8h, 1
F000:F5BE C0 F5 80 CB 04 db 0C0h, 0F5h, 80h, 0CBh, 4
F000:F5C3 loc_1409: ; xref F000:F5A6
F000:F5C3 83 C6 02 add si,2
F000:F5C6 2E: 8B 84 F159 mov ax,cs:data_169[si] ; (F000:F159=3F8h)
F000:F5CB 0B C0 or ax,ax ; Zero ?
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 307
F000:F5CD 74 1C jz short loc_1410 ; Jump if zero
F000:F5CF 8A C8 mov cl,al
F000:F5D1 B0 6F mov al,6Fh ; 'o'
F000:F5D3 90 nop ;
F000:F5D4 BC F5DA mov sp,0F5DAh
F000:F5D7 E9 01AC jmp loc_1443 ; (F786)
F000:F5DA DC F5 8A E1 B0 6E db 0DCh, 0F5h, 8Ah, 0E1h, 0B0h, 6Eh
F000:F5E0 BC E6 F5 E9 A0 01 db 0BCh, 0E6h, 0F5h, 0E9h, 0A0h, 1
F000:F5E6 E8 F5 80 CF 01 db 0E8h, 0F5h, 80h, 0CFh, 1
F000:F5EB loc_1410: ; xref F000:F5CD
F000:F5EB BA 03F4 mov dx,3F4h
F000:F5EE EC in al,dx ; port 3F4h, dsk0 cntrlr status
F000:F5EF 3C FF cmp al,0FFh
F000:F5F1 75 03 jne short loc_1411 ; Jump if not equal
F000:F5F3 80 CB 02 or bl,2
F000:F5F6 loc_1411: ; xref F000:F5F1
F000:F5F6 33 C0 xor ax,ax ; Zero register
F000:F5F8 BA 01F4 mov dx,1F4h
F000:F5FB 90 nop ;
F000:F5FC BC F602 mov sp,0F602h
F000:F5FF E9 0130 jmp loc_1420 ; (F732)
F000:F602 04 F6 0A E4 75 03 db 4, 0F6h, 0Ah, 0E4h, 75h, 3
F000:F608 80 CF 30 B0 69 8A db 80h, 0CFh, 30h, 0B0h, 69h, 8Ah
F000:F60E E3 90 BC 16 F6 E9 db 0E3h, 90h, 0BCh, 16h, 0F6h, 0E9h
F000:F614 70 01 18 F6 B0 6A db 70h, 1, 18h, 0F6h, 0B0h, 6Ah
F000:F61A 8A E7 BC 22 F6 E9 db 8Ah, 0E7h, 0BCh, 22h, 0F6h, 0E9h
F000:F620 64 01 24 F6 B0 54 db 64h, 1, 24h, 0F6h, 0B0h, 54h
F000:F626 E6 43 EB 00 EB 00 db 0E6h, 43h, 0EBh, 0, 0EBh, 0
F000:F62C loc_1412:
F000:F62C B9 0200 mov cx,200h
F000:F62F 33 FF xor di,di ; Zero register
F000:F631 F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di]
F000:F633 B0 00 mov al,0
F000:F635 E6 8F out 8Fh,al ; port 8Fh, DMA page reg ch 4
F000:F637 EB 00 jmp short loc_1413 ; (F639)
F000:F639 loc_1413: ; xref F000:F637
F000:F639 EB 00 jmp short loc_1414 ; (F63B)
F000:F63B loc_1414: ; xref F000:F639
F000:F63B B0 12 mov al,12h
F000:F63D E6 41 out 41h,al ; port 41h, 8253 timer 1 refsh
F000:F63F EB 00 jmp short loc_1415 ; (F641)
F000:F641 loc_1415: ; xref F000:F63F
F000:F641 EB 00 jmp short loc_1416 ; (F643)
F000:F643 loc_1416: ; xref F000:F641
F000:F643 B0 B8 mov al,0B8h
F000:F645 90 nop ;
F000:F646 BC F64C mov sp,0F64Ch
F000:F649 E9 F83D jmp loc_1321 ; (EE89)
F000:F64C 4E F6 A8 80 BE 00 db 4Eh, 0F6h, 0A8h, 80h, 0BEh, 0
F000:F652 18 BF 00 08 BB 00 db 18h, 0BFh, 0, 8, 0BBh, 0
F000:F658 80 75 09 BE 00 0C db 80h, 75h, 9, 0BEh, 0, 0Ch
F000:F65E BF 00 04 BB 00 40 db 0BFh, 0, 4, 0BBh, 0, 40h
F000:F664 B9 AA 55 BA 55 AA db 0B9h, 0AAh, 55h, 0BAh, 55h, 0AAh
F000:F66A 33 C0 BC 72 F6 E9 db 33h, 0C0h, 0BCh, 72h, 0F6h, 0E9h
F000:F670 93 00 74 F6 2B F7 db 93h, 0, 74h, 0F6h, 2Bh, 0F7h
F000:F676 BC 7C F6 E9 89 00 db 0BCh, 7Ch, 0F6h, 0E9h, 89h, 0
F000:F67C 7E F6 2B F7 BC 86 db 7Eh, 0F6h, 2Bh, 0F7h, 0BCh, 86h
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 308
F000:F682 F6 E9 7F 00 88 F6 db 0F6h, 0E9h, 7Fh, 0, 88h, 0F6h
F000:F688 2B F7 BC 90 F6 EB db 2Bh, 0F7h, 0BCh, 90h, 0F6h, 0EBh
F000:F68E 76 90 92 F6 BE 99 db 76h, 90h, 92h, 0F6h, 0BEh, 99h
F000:F694 F1 D1 E0 03 F0 2E db 0F1h, 0D1h, 0E0h, 3, 0F0h, 2Eh
F000:F69A 8A 24 C0 EC 04 80 db 8Ah, 24h, 0C0h, 0ECh, 4, 80h
F000:F6A0 CC 70 B0 05 BC AA db 0CCh, 70h, 0B0h, 5, 0BCh, 0AAh
F000:F6A6 F6 E9 BE 00 AC F6 db 0F6h, 0E9h, 0BEh, 0, 0ACh, 0F6h
F000:F6AC 2E 8A 24 80 E4 0F db 2Eh, 8Ah, 24h, 80h, 0E4h, 0Fh
F000:F6B2 B0 04 BC BA F6 E9 db 0B0h, 4, 0BCh, 0BAh, 0F6h, 0E9h
F000:F6B8 AE 00 BC F6 2E 8A db 0AEh, 0, 0BCh, 0F6h, 2Eh, 8Ah
F000:F6BE 64 01 B0 03 BC C8 db 64h, 1, 0B0h, 3, 0BCh, 0C8h
F000:F6C4 F6 E9 A0 00 CA F6 db 0F6h, 0E9h, 0A0h, 0, 0CAh, 0F6h
F000:F6CA BE 99 F3 8A C4 32 db 0BEh, 99h, 0F3h, 8Ah, 0C4h, 32h
F000:F6D0 E4 D1 E0 03 F0 2E db 0E4h, 0D1h, 0E0h, 3, 0F0h, 2Eh
F000:F6D6 8B 04 81 FF 00 08 db 8Bh, 4, 81h, 0FFh, 0, 8
F000:F6DC 74 0C D1 E8 0A C0 db 74h, 0Ch, 0D1h, 0E8h, 0Ah, 0C0h
F000:F6E2 75 02 B0 FF 8A E0 db 75h, 2, 0B0h, 0FFh, 8Ah, 0E0h
F000:F6E8 EB 0D B0 01 BC F2 db 0EBh, 0Dh, 0B0h, 1, 0BCh, 0F2h
F000:F6EE F6 EB 77 90 F4 F6 db 0F6h, 0EBh, 77h, 90h, 0F4h, 0F6h
F000:F6F4 2E 8A db 2Eh, 8Ah
F000:F6F6 24 db 24h
F000:F6F7 loc_1417:
F000:F6F7 B0 02 mov al,2
F000:F6F9 90 nop ;
F000:F6FA BC F700 mov sp,0F700h
F000:F6FD EB 69 jmp short loc_1434 ; (F768)
F000:F6FF 90 02 F7 E9 CA FC db 90h, 2, 0F7h, 0E9h, 0CAh, 0FCh
F000:F705 loc_1418:
F000:F705 D0 E0 shl al,1 ; Shift w/zeros fill
F000:F707 D0 E0 shl al,1 ; Shift w/zeros fill
F000:F709 89 0C mov [si],cx
F000:F70B 89 10 mov [bx+si],dx
F000:F70D 39 0C cmp [si],cx
F000:F70F 75 20 jne short loc_ret_1419 ; Jump if not equal
F000:F711 39 10 cmp [bx+si],dx
F000:F713 75 1C jne short loc_ret_1419 ; Jump if not equal
F000:F715 0C 01 or al,1
F000:F717 C1 EB 02 shr bx,2 ; Shift w/zeros fill
F000:F71A 89 10 mov [bx+si],dx
F000:F71C C1 E3 02 shl bx,2 ; Shift w/zeros fill
F000:F71F 39 0C cmp [si],cx
F000:F721 75 0E jne short loc_ret_1419 ; Jump if not equal
F000:F723 0C 03 or al,3
F000:F725 D1 EB shr bx,1 ; Shift w/zeros fill
F000:F727 89 10 mov [bx+si],dx
F000:F729 D1 E3 shl bx,1 ; Shift w/zeros fill
F000:F72B 39 0C cmp [si],cx
F000:F72D 74 02 je short loc_ret_1419 ; Jump if equal
F000:F72F 34 01 xor al,1
F000:F731 loc_ret_1419: ; xref F000:F70F, F713, F721, F72D
F000:F731 C3 retn
F000:F732 loc_1420: ; xref F000:F5FF
F000:F732 D0 E4 shl ah,1 ; Shift w/zeros fill
F000:F734 B0 55 mov al,55h ; 'U'
F000:F736 EE out dx,al ; port 0, DMA-1 bas&add ch 0
F000:F737 EB 00 jmp short loc_1421 ; (F739)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 309
F000:F739 loc_1421: ; xref F000:F737
F000:F739 EB 00 jmp short loc_1422 ; (F73B)
F000:F73B loc_1422: ; xref F000:F739
F000:F73B F6 D0 not al
F000:F73D E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:F73F EB 00 jmp short loc_1423 ; (F741)
F000:F741 loc_1423: ; xref F000:F73F
F000:F741 EB 00 jmp short loc_1424 ; (F743)
F000:F743 loc_1424: ; xref F000:F741
F000:F743 EC in al,dx ; port 0, DMA-1 bas&add ch 0
F000:F744 EB 00 jmp short loc_1425 ; (F746)
F000:F746 loc_1425: ; xref F000:F744
F000:F746 EB 00 jmp short loc_1426 ; (F748)
F000:F748 loc_1426: ; xref F000:F746
F000:F748 34 55 xor al,55h ; 'U'
F000:F74A 75 1B jnz short loc_ret_1433 ; Jump if not zero
F000:F74C B0 AA mov al,0AAh
F000:F74E EE out dx,al ; port 0, DMA-1 bas&add ch 0
F000:F74F EB 00 jmp short loc_1427 ; (F751)
F000:F751 loc_1427: ; xref F000:F74F
F000:F751 EB 00 jmp short loc_1428 ; (F753)
F000:F753 loc_1428: ; xref F000:F751
F000:F753 F6 D0 not al
F000:F755 E6 80 out 80h,al ; port 80h, diagnostc chkpoint
F000:F757 EB 00 jmp short loc_1429 ; (F759)
F000:F759 loc_1429: ; xref F000:F757
F000:F759 EB 00 jmp short loc_1430 ; (F75B)
F000:F75B loc_1430: ; xref F000:F759
F000:F75B EC in al,dx ; port 0, DMA-1 bas&add ch 0
F000:F75C EB 00 jmp short loc_1431 ; (F75E)
F000:F75E loc_1431: ; xref F000:F75C
F000:F75E EB 00 jmp short loc_1432 ; (F760)
F000:F760 loc_1432: ; xref F000:F75E
F000:F760 34 AA xor al,0AAh
F000:F762 75 03 jnz short loc_ret_1433 ; Jump if not zero
F000:F764 80 CC 01 or ah,1
F000:F767 loc_ret_1433: ; xref F000:F74A, F762
F000:F767 C3 retn
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CDE1, CDE7, CDED, CDF3, CE13, CE19, CE1F
; CE25, CE46, CEE4, CF0A
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_266 proc near
F000:F768 loc_1434: ; xref F000:F4E9, F6FD
F000:F768 E6 EC out 0ECh,al ; port 0ECh
F000:F76A EB 00 jmp short loc_1435 ; (F76C)
F000:F76C loc_1435: ; xref F000:F76A
F000:F76C EB 00 jmp short loc_1436 ; (F76E)
F000:F76E loc_1436: ; xref F000:F76C
F000:F76E 86 C4 xchg al,ah
F000:F770 E6 ED out 0EDh,al ; port 0EDh
F000:F772 EB 00 jmp short loc_1437 ; (F774)
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 310
F000:F774 loc_1437: ; xref F000:F772
F000:F774 EB 00 jmp short loc_1438 ; (F776)
F000:F776 loc_1438: ; xref F000:F774
F000:F776 86 C4 xchg al,ah
F000:F778 C3 retn
sub_266 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:CDBB, CDC5, CDCC, CDD3, CDDA
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_267 proc near
F000:F779 E6 EC out 0ECh,al ; port 0ECh
F000:F77B EB 00 jmp short loc_1439 ; (F77D)
F000:F77D loc_1439: ; xref F000:F77B
F000:F77D EB 00 jmp short loc_1440 ; (F77F)
F000:F77F loc_1440: ; xref F000:F77D
F000:F77F E4 ED in al,0EDh ; port 0EDh
F000:F781 EB 00 jmp short loc_1441 ; (F783)
F000:F783 loc_1441: ; xref F000:F781
F000:F783 EB 00 jmp short loc_ret_1442 ; (F785)
F000:F785 loc_ret_1442: ; xref F000:F783
F000:F785 C3 retn
sub_267 endp
F000:F786 loc_1443: ; xref F000:CF71, CFB1, D04F, D085
; F50B, F5AF, F5D7
F000:F786 BA 0170 mov dx,170h
F000:F789 EE out dx,al ; port 170h, hdsk1-write data
F000:F78A EB 00 jmp short loc_1444 ; (F78C)
F000:F78C loc_1444: ; xref F000:F78A
F000:F78C EB 00 jmp short loc_1445 ; (F78E)
F000:F78E loc_1445: ; xref F000:F78C
F000:F78E 86 C4 xchg al,ah
F000:F790 42 inc dx
F000:F791 EE out dx,al ; port 171h, hdsk1-precomp cylr
F000:F792 EB 00 jmp short loc_1446 ; (F794)
F000:F794 loc_1446: ; xref F000:F792
F000:F794 EB 00 jmp short loc_1447 ; (F796)
F000:F796 loc_1447: ; xref F000:F794
F000:F796 86 C4 xchg al,ah
F000:F798 C3 retn
F000:F799 loc_1448:
F000:F799 BA 0170 mov dx,170h
F000:F79C EE out dx,al ; port 170h, hdsk1-write data
F000:F79D EB 00 jmp short loc_1449 ; (F79F)
F000:F79F loc_1449: ; xref F000:F79D
F000:F79F EB 00 jmp short loc_1450 ; (F7A1)
F000:F7A1 loc_1450: ; xref F000:F79F
F000:F7A1 42 inc dx
F000:F7A2 EC in al,dx ; port 171h, hdsk1-error regstr
F000:F7A3 EB 00 jmp short loc_1451 ; (F7A5)
F000:F7A5 loc_1451: ; xref F000:F7A3
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 311
F000:F7A5 EB 00 jmp short loc_ret_1452 ; (F7A7)
F000:F7A7 loc_ret_1452: ; xref F000:F7A5
F000:F7A7 C3 retn
F000:F7A8 B0 C0 E8 DC F6 BE db 0B0h, 0C0h, 0E8h, 0DCh, 0F6h, 0BEh
F000:F7AE 0D F8 A8 01 EB 58 db 0Dh, 0F8h, 0A8h, 1, 0EBh, 58h
F000:F7B4 90 50 E8 00 96 BE db 90h, 50h, 0E8h, 0, 96h, 0BEh
F000:F7BA 2A F8 E8 FA 95 58 db 2Ah, 0F8h, 0E8h, 0FAh, 95h, 58h
F000:F7C0 BE 13 F8 A8 02 EB db 0BEh, 13h, 0F8h, 0A8h, 2, 0EBh
F000:F7C6 45 90 50 E8 ED 95 db 45h, 90h, 50h, 0E8h, 0EDh, 95h
F000:F7CC BE 2A F8 E8 E7 95 db 0BEh, 2Ah, 0F8h, 0E8h, 0E7h, 95h
F000:F7D2 58 BE 19 F8 A8 04 db 58h, 0BEh, 19h, 0F8h, 0A8h, 4
F000:F7D8 EB 32 90 50 E8 DA db 0EBh, 32h, 90h, 50h, 0E8h, 0DAh
F000:F7DE 95 BE 2A F8 E8 D4 db 95h, 0BEh, 2Ah, 0F8h, 0E8h, 0D4h
F000:F7E4 95 58 BE 1D F8 A8 db 95h, 58h, 0BEh, 1Dh, 0F8h, 0A8h
F000:F7EA 08 EB 1F 90 50 E8 db 8, 0EBh, 1Fh, 90h, 50h, 0E8h
F000:F7F0 C7 95 BE 2A F8 E8 db 0C7h, 95h, 0BEh, 2Ah, 0F8h, 0E8h
F000:F7F6 C1 95 58 BE 24 F8 db 0C1h, 95h, 58h, 0BEh, 24h, 0F8h
F000:F7FC A8 10 EB 0C 90 50 db 0A8h, 10h, 0EBh, 0Ch, 90h, 50h
F000:F802 E8 B4 95 BE 2A F8 db 0E8h, 0B4h, 95h, 0BEh, 2Ah, 0F8h
F000:F808 E8 AE 95 58 C3 43 db 0E8h, 0AEh, 95h, 58h, 0C3h, 43h
F000:F80E 4F 4D 2D 31 00 43 db 4Fh, 4Dh, 2Dh, 31h, 0, 43h
F000:F814 4F 4D 2D 32 00 50 db 4Fh, 4Dh, 2Dh, 32h, 0, 50h
F000:F81A 52 4E 00 46 4C 4F db 52h, 4Eh, 0, 46h, 4Ch, 4Fh
F000:F820 50 50 59 00 48 44 db 50h, 50h, 59h, 0, 48h, 44h
F000:F826 49 53 4B 00 db 49h, 53h, 4Bh, 0
F000:F82A 20 62 61 73 65 20 db ' base address conflict', 0Dh
F000:F830 61 64 64 72 65 73
F000:F836 73 20 63 6F 6E 66
F000:F83C 6C 69 63 74 0D
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 12h ▒▒▒▒▒
;
; SYSTEM MEMORY SIZE
;
; Returns: ax = number of contiguous 1K bytes blocks of memory
; from 0 to 640 K.
;
; Regs used: ax
F000:F841 int_12h_memsiz proc near ; xref F000:FF07
F000:F841 FB sti ; Enable interrupts
F000:F842 1E push ds
F000:F843 6A 40 push 40h
F000:F845 1F pop ds
F000:F846 A1 0013 mov ax,main_ram_size ; (0040:0013=280h)
F000:F849 1F pop ds
F000:F84A CF iret ; Interrupt return
int_12h_memsiz endp
F000:F84B 00 00 db 0, 0
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:F84D int_11h_entry: ; xref F000:FF05
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 312
F000:F84D EB 00 jmp short int_11h_equip ; (F84F)
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 11h ▒▒▒▒▒
;
; EQUIPMENT INSTALLED
;
; Returns: ax = equip_install word
;
; 15 14 13 12 11 10 9 8
; \ / game \ /
; # of printer port # of RS-232
; ports 0-3 used ports 0-4
;
; 7 6 5 4 3 2 1 0
; \ / \ / \ / Math |
; # of video mode RAM uP no
; floppy at boot up 00=16K floppy
; drives 00=EGA 01=32K drive
; 1-4 01=CGA-40 10=48K if 0
; if bit 10=CGA-80 11=64K
; 0 = 1 11=MDA-80 (old PCs)
;
; Note: bit 13 = modem on PC lap-tops
; bit 2 = mouse on PS/2
;
; Regs used: ax
F000:F84F int_11h_equip proc near ; xref F000:F84D
F000:F84F FB sti ; Enable interrupts
F000:F850 1E push ds
F000:F851 6A 40 push 40h
F000:F853 1F pop ds
F000:F854 A1 0010 mov ax,equip_bits ; (0040:0010=4661h)
F000:F857 1F pop ds
F000:F858 CF iret ; Interrupt return
int_11h_equip endp
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:F859 int_15h_entry: ; xref F000:FF0D
F000:F859 E9 D108 jmp int_15h_servics ; (C964)
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 17h ▒▒▒▒▒
;
; PRINTER SERVICES
;
; Call with: ah = function code
; dx = printer number 0-2 (some systems allow 0-3)
;
; Returns: ah = status bits
; 7 6 5 4 3 2 1 0
; not acknow- no select I/O unused no
; busy ledge paper error response
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 313
; __________from printer__________
;
; Functions:
; ah = 0 Send character to printer, al = character
; ah = 1 Printer port initialization
; ah = 2 Get printer status in ah
F000:F85C int_17h_printer proc near ; xref F000:EFD2
F000:F85C FB sti ; Enable interrupts
F000:F85D 53 push bx
F000:F85E 52 push dx
F000:F85F 1E push ds
F000:F860 6A 40 push 40h
F000:F862 1F pop ds
F000:F863 8B DA mov bx,dx
F000:F865 D1 E3 shl bx,1 ; Shift w/zeros fill
F000:F867 8B 97 0008 mov dx,[bx+8]
nop ;*Fixup for MASM (M)
F000:F86B 23 D2 and dx,dx
F000:F86D 74 6F jz short loc_1473 ; Jump if zero
F000:F86F D0 EC shr ah,1 ; Shift w/zeros fill
F000:F871 8A E0 mov ah,al
F000:F873 75 58 jnz short loc_1467 ; Jump if not zero
F000:F875 72 35 jc short loc_1460 ; Jump if carry Set
F000:F877 EE out dx,al ; port 378h, printer-2 data
F000:F878 42 inc dx
F000:F879 EB 00 jmp short loc_1453 ; (F87B)
F000:F87B loc_1453: ; xref F000:F879
F000:F87B EB 00 jmp short loc_1454 ; (F87D)
F000:F87D loc_1454: ; xref F000:F87B
F000:F87D EC in al,dx ; port 379h, printer-2 status
F000:F87E A8 80 test al,80h
F000:F880 75 07 jnz short loc_1455 ; Jump if not zero
F000:F882 50 push ax
F000:F883 B8 90FE mov ax,90FEh
F000:F886 CD 15 int 15h ; General services, ah=func 90h
; device busy, al=type
F000:F888 58 pop ax
F000:F889 loc_1455: ; xref F000:F880
F000:F889 D1 EB shr bx,1 ; Shift w/zeros fill
F000:F88B 8A 9F 0078 mov bl,prn_timeout_1[bx] ; (0040:0078=14h)
F000:F88F 32 FF xor bh,bh ; Zero register
F000:F891 C1 E3 02 shl bx,2 ; Shift w/zeros fill
F000:F894 51 push cx
F000:F895 loc_1456: ; xref F000:F8A3
F000:F895 33 C9 xor cx,cx ; Zero register
F000:F897 locloop_1457: ; xref F000:F8A0
F000:F897 EB 00 jmp short loc_1458 ; (F899)
F000:F899 loc_1458: ; xref F000:F897
F000:F899 EB 00 jmp short loc_1459 ; (F89B)
F000:F89B loc_1459: ; xref F000:F899
F000:F89B EC in al,dx ; port 379h, printer-2 status
F000:F89C A8 80 test al,80h
F000:F89E 75 19 jnz short loc_1462 ; Jump if not zero
F000:F8A0 E2 F5 loop locloop_1457 ; Loop if cx > 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 314
F000:F8A2 4B dec bx
F000:F8A3 75 F0 jnz loc_1456 ; Jump if not zero
F000:F8A5 59 pop cx
F000:F8A6 24 F8 and al,0F8h
F000:F8A8 0C 01 or al,1
F000:F8AA EB 2E jmp short loc_1472 ; (F8DA)
F000:F8AC loc_1460: ; xref F000:F875
F000:F8AC B0 08 mov al,8
F000:F8AE 42 inc dx
F000:F8AF 42 inc dx
F000:F8B0 EE out dx,al ; port 37Bh
F000:F8B1 BB 4000 mov bx,4000h
F000:F8B4 loc_1461: ; xref F000:F8B5
F000:F8B4 4B dec bx
F000:F8B5 75 FD jnz loc_1461 ; Jump if not zero
F000:F8B7 EB 0E jmp short loc_1466 ; (F8C7)
F000:F8B9 loc_1462: ; xref F000:F89E
F000:F8B9 59 pop cx
F000:F8BA B0 0D mov al,0Dh
F000:F8BC 42 inc dx
F000:F8BD EB 00 jmp short loc_1463 ; (F8BF)
F000:F8BF loc_1463: ; xref F000:F8BD
F000:F8BF EB 00 jmp short loc_1464 ; (F8C1)
F000:F8C1 loc_1464: ; xref F000:F8BF
F000:F8C1 FA cli ; Disable interrupts
F000:F8C2 EE out dx,al ; port 37Ch
F000:F8C3 EB 00 jmp short loc_1465 ; (F8C5)
F000:F8C5 loc_1465: ; xref F000:F8C3
F000:F8C5 EB 00 jmp short loc_1466 ; (F8C7)
F000:F8C7 loc_1466: ; xref F000:F8B7, F8C5
F000:F8C7 B0 0C mov al,0Ch
F000:F8C9 EE out dx,al ; port 37Ch
F000:F8CA FB sti ; Enable interrupts
F000:F8CB 4A dec dx
F000:F8CC 4A dec dx
F000:F8CD loc_1467: ; xref F000:F873
F000:F8CD 42 inc dx
F000:F8CE EB 00 jmp short loc_1468 ; (F8D0)
F000:F8D0 loc_1468: ; xref F000:F8CE
F000:F8D0 EB 00 jmp short loc_1469 ; (F8D2)
F000:F8D2 loc_1469: ; xref F000:F8D0
F000:F8D2 EC in al,dx ; port 37Bh
F000:F8D3 EB 00 jmp short loc_1470 ; (F8D5)
F000:F8D5 loc_1470: ; xref F000:F8D3
F000:F8D5 EB 00 jmp short loc_1471 ; (F8D7)
F000:F8D7 loc_1471: ; xref F000:F8D5
F000:F8D7 EC in al,dx ; port 37Bh
F000:F8D8 24 F8 and al,0F8h
F000:F8DA loc_1472: ; xref F000:F8AA
F000:F8DA 34 48 xor al,48h ; 'H'
F000:F8DC 86 C4 xchg al,ah
F000:F8DE loc_1473: ; xref F000:F86D
F000:F8DE 1F pop ds
F000:F8DF 5A pop dx
F000:F8E0 5B pop bx
F000:F8E1 CF iret ; Interrupt return
int_17h_printer endp
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 315
; ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ int 14h ▒▒▒▒▒
;
; RS-232 SERIAL PORTS SERVICES
;
; Call with: ah = sub-function number
; dx = communications number, com1 = 0
;
; Returns: ah = line status, bit 0 = Data ready
; bit 1 = Overrun error
; bit 2 = Parity error
; bit 3 = CRC framing error
; bit 4 = Break detect
; bit 5 = Xmit buffer register empty
; bit 6 = Xmit shift out register empty
; bit 7 = No response, ignore bits 0-6
;
; al = modem status, bit 0 = Change in Clear To Send
; bit 1 = Change in Data Set Ready
; bit 2 = Falling edge ring detect
; bit 3 = Change in receive detect line
; bit 4 = Clear to Send (CTS)
; bit 5 = Data Set Ready (DTS)
; bit 6 = Ring detected
; bit 7 = Receive detect line
;
; Functions:
; ah = 0 Reset the specified port
; Call with: al serial port register values
; bits 7 6 5 4 3 2 1 0
; --baud-rate-- -Parity- Stop --Word--
; 000 = 110 bits bit size
; 001 = 150 (bits)
; 010 = 300 00 = off 0=1
; 011 = 600 01 = odd 1=2 10 = 7
; 100 = 1200 10 = off 11 = 8
; 101 = 2400 11 = even
; 110 = 4800
; 111 = 9600
; ah = 1 Transmit a character
; Call with: al = character to send (not changed on exit)
; ah = 2 Received a character
; Returns: al = character received
; ah = 3 Get status
; ah = 4 Advanced Initialization (not supported on all systems)
; Call with: al = 0/1 no break/break
; bh = Parity, 0 = none 3 = stick odd
; 1 = odd 4 = stick even
; 2 = even
; bl = 0/1 Stop bits set to 1/2
; ch = Word size, 0 = 5 bits 2 = 7 bits
; 1 = 6 bits 3 = 8 bits
;
; cl = Baud rate, 0 = 110 5 = 2400
; 1 = 150 6 = 4800
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 316
; 2 = 300 7 = 9600
; 3 = 600 8 = 19200
; 4 = 1200
; ah = 5 Advanced port control (not supported on all systems)
; al = 0 Get modem register
; Returns: bl bit 0 = Data Terminal Ready (DTR)
; bit 1 = Request To Send (RTS)
; bit 2 = Out 1
; bit 3 = Out 2
; bit 4 = Loop modem
; al = 1 Set modem register
; Call with: bl = value for register (see above)
F000:F8E2 int_14h_RS232 proc near ; xref F000:E739
F000:F8E2 FB sti ; Enable interrupts
F000:F8E3 60 pusha ; Save all regs
F000:F8E4 1E push ds
F000:F8E5 6A 40 push 40h
F000:F8E7 1F pop ds
F000:F8E8 8B DA mov bx,dx
F000:F8EA 8B BF 007C mov di,word ptr rs232_timeout_1[bx] ; (0040:007C=101h)
F000:F8EE 81 E7 00FF and di,0FFh
F000:F8F2 D1 E3 shl bx,1 ; Shift w/zeros fill
F000:F8F4 8B 97 0000 mov dx,[bx+0]
nop ;*Fixup for MASM (M)
F000:F8F8 23 D2 and dx,dx
F000:F8FA 74 22 jz short loc_1480 ; Jump if zero
F000:F8FC C1 E7 02 shl di,2 ; Shift w/zeros fill
F000:F8FF D0 EC shr ah,1 ; Shift w/zeros fill
F000:F901 74 2E jz short loc_1482 ; Jump if zero
F000:F903 FE CC dec ah
F000:F905 75 17 jnz short loc_1480 ; Jump if not zero
F000:F907 73 18 jnc short loc_1481 ; Jump if carry=0
F000:F909 loc_1474: ; xref F000:F98A
F000:F909 83 C2 05 add dx,5
F000:F90C EB 00 jmp short loc_1475 ; (F90E)
F000:F90E loc_1475: ; xref F000:F90C
F000:F90E EB 00 jmp short loc_1476 ; (F910)
F000:F910 loc_1476: ; xref F000:F90E
F000:F910 EC in al,dx ; port 3FDh, RS232-1 line stat
F000:F911 8A E0 mov ah,al
F000:F913 42 inc dx
F000:F914 EB 00 jmp short loc_1477 ; (F916)
F000:F916 loc_1477: ; xref F000:F914
F000:F916 EB 00 jmp short loc_1478 ; (F918)
F000:F918 loc_1478: ; xref F000:F916
F000:F918 EC in al,dx ; port 3FEh, RS232-1 modem stat
F000:F919 loc_1479: ; xref F000:F92F, F942, F947
F000:F919 8B EC mov bp,sp
F000:F91B 89 46 10 mov [bp+10h],ax
F000:F91E loc_1480: ; xref F000:F8FA, F905
F000:F91E 1F pop ds
F000:F91F 61 popa ; Restore all regs
F000:F920 CF iret ; Interrupt return
int_14h_RS232 endp
F000:F921 loc_1481: ; xref F000:F907
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 317
F000:F921 B0 01 mov al,1
F000:F923 BB 0120 mov bx,120h
F000:F926 E8 0064 call sub_268 ; (F98D)
F000:F929 75 19 jnz short loc_1483 ; Jump if not zero
F000:F92B 80 E4 1E and ah,1Eh
F000:F92E EC in al,dx ; port 0, DMA-1 bas&add ch 0
F000:F92F EB E8 jmp short loc_1479 ; (F919)
F000:F931 loc_1482: ; xref F000:F901
F000:F931 73 16 jnc short loc_1484 ; Jump if carry=0
F000:F933 50 push ax
F000:F934 B0 03 mov al,3
F000:F936 BB 2030 mov bx,2030h
F000:F939 E8 0051 call sub_268 ; (F98D)
F000:F93C 5B pop bx
F000:F93D 8A C3 mov al,bl
F000:F93F 75 03 jnz short loc_1483 ; Jump if not zero
F000:F941 EE out dx,al ; port 0, DMA-1 bas&add ch 0
F000:F942 EB D5 jmp short loc_1479 ; (F919)
F000:F944 loc_1483: ; xref F000:F929, F93F
F000:F944 80 CC 80 or ah,80h
F000:F947 EB D0 jmp short loc_1479 ; (F919)
F000:F949 loc_1484: ; xref F000:F931
F000:F949 8A E0 mov ah,al
F000:F94B 24 E0 and al,0E0h
F000:F94D B9 0417 mov cx,417h
F000:F950 74 0C jz short loc_1486 ; Jump if zero
F000:F952 C0 E8 05 shr al,5 ; Shift w/zeros fill
F000:F955 B9 0600 mov cx,600h
F000:F958 loc_1485: ; xref F000:F95C
F000:F958 D1 E9 shr cx,1 ; Shift w/zeros fill
F000:F95A FE C8 dec al
F000:F95C 75 FA jnz loc_1485 ; Jump if not zero
F000:F95E loc_1486: ; xref F000:F950
F000:F95E B0 80 mov al,80h
F000:F960 83 C2 03 add dx,3
F000:F963 EE out dx,al ; port 3, DMA-1 bas&cnt ch 1
F000:F964 52 push dx
F000:F965 8A C5 mov al,ch
F000:F967 4A dec dx
F000:F968 4A dec dx
F000:F969 EB 00 jmp short loc_1487 ; (F96B)
F000:F96B loc_1487: ; xref F000:F969
F000:F96B EB 00 jmp short loc_1488 ; (F96D)
F000:F96D loc_1488: ; xref F000:F96B
F000:F96D EE out dx,al ; port 1, DMA-1 bas&cnt ch 0
F000:F96E 8A C1 mov al,cl
F000:F970 4A dec dx
F000:F971 EB 00 jmp short loc_1489 ; (F973)
F000:F973 loc_1489: ; xref F000:F971
F000:F973 EB 00 jmp short loc_1490 ; (F975)
F000:F975 loc_1490: ; xref F000:F973
F000:F975 EE out dx,al ; port 0, DMA-1 bas&add ch 0
F000:F976 8A C4 mov al,ah
F000:F978 24 1F and al,1Fh
F000:F97A 5A pop dx
F000:F97B EB 00 jmp short loc_1491 ; (F97D)
F000:F97D loc_1491: ; xref F000:F97B
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 318
F000:F97D EB 00 jmp short loc_1492 ; (F97F)
F000:F97F loc_1492: ; xref F000:F97D
F000:F97F EE out dx,al ; port 3, DMA-1 bas&cnt ch 1
F000:F980 2A C0 sub al,al
F000:F982 4A dec dx
F000:F983 4A dec dx
F000:F984 EB 00 jmp short loc_1493 ; (F986)
F000:F986 loc_1493: ; xref F000:F984
F000:F986 EB 00 jmp short loc_1494 ; (F988)
F000:F988 loc_1494: ; xref F000:F986
F000:F988 EE out dx,al ; port 1, DMA-1 bas&cnt ch 0
F000:F989 4A dec dx
F000:F98A E9 FF7C jmp loc_1474 ; (F909)
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:F926, F939
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_268 proc near
F000:F98D 52 push dx
F000:F98E 83 C2 04 add dx,4
F000:F991 EE out dx,al ; port 4, DMA-1 bas&add ch 2
F000:F992 42 inc dx
F000:F993 42 inc dx
F000:F994 57 push di
F000:F995 E8 000B call sub_269 ; (F9A3)
F000:F998 5F pop di
F000:F999 75 06 jnz short loc_1495 ; Jump if not zero
F000:F99B 8A DF mov bl,bh
F000:F99D 4A dec dx
F000:F99E E8 0002 call sub_269 ; (F9A3)
F000:F9A1 loc_1495: ; xref F000:F999
F000:F9A1 5A pop dx
F000:F9A2 C3 retn
sub_268 endp
;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
; SUBROUTINE
;
; Called from: F000:F995, F99E
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sub_269 proc near
F000:F9A3 loc_1496: ; xref F000:F9B5
F000:F9A3 33 C9 xor cx,cx ; Zero register
F000:F9A5 locloop_1497: ; xref F000:F9B2
F000:F9A5 EB 00 jmp short loc_1498 ; (F9A7)
F000:F9A7 loc_1498: ; xref F000:F9A5
F000:F9A7 EB 00 jmp short loc_1499 ; (F9A9)
F000:F9A9 loc_1499: ; xref F000:F9A7
F000:F9A9 EC in al,dx ; port 6, DMA-1 bas&add ch 3
F000:F9AA 8A E0 mov ah,al
F000:F9AC 22 C3 and al,bl
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 319
F000:F9AE 3A C3 cmp al,bl
F000:F9B0 74 06 je short loc_ret_1500 ; Jump if equal
F000:F9B2 E2 F1 loop locloop_1497 ; Loop if cx > 0
F000:F9B4 4F dec di
F000:F9B5 75 EC jnz loc_1496 ; Jump if not zero
F000:F9B7 4F dec di
F000:F9B8 loc_ret_1500: ; xref F000:F9B0
F000:F9B8 C3 retn
sub_269 endp
F000:F9B9 loc_1501: ; xref F000:E154
F000:F9B9 2E: 0F 01 16 E268 lgdt qword ptr cs:data_152 ; (F000:E268=60h) Load global des tbl
F000:F9BF B8 0040 mov ax,seg_b
F000:F9C2 8E D8 mov ds,ax
F000:F9C4 8E C0 mov es,ax
F000:F9C6 8E D0 mov ss,ax
F000:F9C8 66| C1 C8 10 ror eax,10h ; Rotate
F000:F9CC 8B C8 mov cx,ax
F000:F9CE 0F 20 C0 mov eax,cr0 ; Mov reg-control reg
F000:F9D1 66| 25 7FFFFFFE and eax,7FFFFFFEh
F000:F9D7 90 nop ;
F000:F9D8 90 nop ;
F000:F9D9 0F 22 C0 mov cr0,eax ; Mov reg-control reg
F000:F9DC EA F000F9E1 jmp far ptr loc_1502 ; (F9E1)
F000:F9E1 loc_1502: ; xref F000:F9DC
F000:F9E1 2E: 0F 01 1E E2B8 lidt qword ptr cs:data_157 ; (F000:E2B8=0FFFFh) Load int des tabl
F000:F9E7 2E: 0F 01 16 E2A0 lgdt qword ptr cs:data_155 ; (F000:E2A0=0FFFFh) Load global des t
F000:F9ED 8B C1 mov ax,cx
F000:F9EF 66| C1 C8 10 ror eax,10h ; Rotate
F000:F9F3 E9 E665 jmp loc_1197 ; (E05B)
F000:F9F6 000A[00] db 10 dup (0)
F000:FA00 68 50 50 01 01 01 db 68h, 50h, 50h, 1, 1, 1
F000:FA06 01 01 2A B2 0A 62 db 1, 1, 2Ah, 0B2h, 0Ah, 62h
F000:FA0C AA 0A A2 4A 7A 72 db 0AAh, 0Ah, 0A2h, 4Ah, 7Ah, 72h
F000:FA12 01 1A 7A 82 CA 61 db 1, 1Ah, 7Ah, 82h, 0CAh, 61h
F000:FA18 01 72 7A A2 01 32 db 1, 72h, 7Ah, 0A2h, 1, 32h
F000:FA1E 7A 92 01 9A 0A 62 db 7Ah, 92h, 1, 9Ah, 0Ah, 62h
F000:FA24 2A 68 50 01 01 01 db 2Ah, 68h, 50h, 1, 1, 1
F000:FA2A 01 01 41 1A 49 01 db 1, 1, 41h, 1Ah, 49h, 1
F000:FA30 0A 6B 2B 93 4B 1B db 0Ah, 6Bh, 2Bh, 93h, 4Bh, 1Bh
F000:FA36 0B 73 01 6A 2B 3B db 0Bh, 73h, 1, 6Ah, 2Bh, 3Bh
F000:FA3C 0B A3 93 2B 73 23 db 0Bh, 0A3h, 93h, 2Bh, 73h, 23h
F000:FA42 9B 01 4A 73 1B db 9Bh, 1, 4Ah, 73h, 1Bh
F000:FA47 71 61 68 50 54 db 71h, 61h, 68h, 50h, 54h
F000:FA4C loc_1503: ; xref F000:FA62
F000:FA4C 61 popa ; Restore all regs
F000:FA4D C3 retn
F000:FA4E 60 BE 70 FF B9 4C db 60h, 0BEh, 70h, 0FFh, 0B9h, 4Ch
F000:FA54 00 BB FF F9 db 0, 0BBh, 0FFh, 0F9h
F000:FA58 locloop_1504: ; xref F000:FA60
F000:FA58 2E: AC lods byte ptr cs:[si] ; String [si] to al
F000:FA5A 43 inc bx
F000:FA5B F6 D0 not al
F000:FA5D 2E: 32 07 xor al,cs:[bx]
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 320
F000:FA60 E1 F6 loopz locloop_1504 ; Loop if zf=1, cx>0
F000:FA62 74 E8 jz loc_1503 ; Jump if zero
F000:FA64 C3 retn
F000:FA65 0009[FF] db 9 dup (0FFh)
F000:FA6E 00 00 00 00 00 00 video_char_tbl db 0, 0, 0, 0, 0, 0 ; Video characters in graphic modes
F000:FA74 00 00 3C 42 A5 81 db 0, 0, 3Ch, 42h, 0A5h, 81h
F000:FA7A BD 99 42 3C 3C 7E db 0BDh, 99h, 42h, 3Ch, 3Ch, 7Eh
F000:FA80 DB FF C3 E7 7E 3C db 0DBh, 0FFh, 0C3h, 0E7h, 7Eh, 3Ch
F000:FA86 44 EE FE FE 7C 38 db 44h, 0EEh, 0FEh, 0FEh, 7Ch, 38h
F000:FA8C 10 00 10 38 7C FE db 10h, 0, 10h, 38h, 7Ch, 0FEh
F000:FA92 7C 38 10 00 18 3C db 7Ch, 38h, 10h, 0, 18h, 3Ch
F000:FA98 DB FF DB 18 3C 00 db 0DBh, 0FFh, 0DBh, 18h, 3Ch, 0
F000:FA9E 18 3C 7E FF 7E 18 db 18h, 3Ch, 7Eh, 0FFh, 7Eh, 18h
F000:FAA4 3C 00 00 00 3C 3C db 3Ch, 0, 0, 0, 3Ch, 3Ch
F000:FAAA 3C 3C 00 00 FF FF db 3Ch, 3Ch, 0, 0, 0FFh, 0FFh
F000:FAB0 C3 C3 C3 C3 FF FF db 0C3h, 0C3h, 0C3h, 0C3h, 0FFh, 0FFh
F000:FAB6 00 7E 42 42 42 42 db 0, 7Eh, 42h, 42h, 42h, 42h
F000:FABC 7E 00 FF 81 BD BD db 7Eh, 0, 0FFh, 81h, 0BDh, 0BDh
F000:FAC2 BD BD 81 FF 0F 07 db 0BDh, 0BDh, 81h, 0FFh, 0Fh, 7
F000:FAC8 07 7D CC CC CC 78 db 7, 7Dh, 0CCh, 0CCh, 0CCh, 78h
F000:FACE 78 CC CC CC 78 30 db 78h, 0CCh, 0CCh, 0CCh, 78h, 30h
F000:FAD4 FC 30 1F 33 3F 30 db 0FCh, 30h, 1Fh, 33h, 3Fh, 30h
F000:FADA 30 70 F0 E0 3F 63 db 30h, 70h, 0F0h, 0E0h, 3Fh, 63h
F000:FAE0 7F 63 63 67 E6 C0 db 7Fh, 63h, 63h, 67h, 0E6h, 0C0h
F000:FAE6 DB DB 3C E7 E7 3C db 0DBh, 0DBh, 3Ch, 0E7h, 0E7h, 3Ch
F000:FAEC DB DB C0 F0 F8 FE db 0DBh, 0DBh, 0C0h, 0F0h, 0F8h, 0FEh
F000:FAF2 F8 F0 C0 00 06 1E db 0F8h, 0F0h, 0C0h, 0, 6, 1Eh
F000:FAF8 3E FE 3E 1E 06 00 db 3Eh, 0FEh, 3Eh, 1Eh, 6, 0
F000:FAFE 30 78 FC 30 30 FC db 30h, 78h, 0FCh, 30h, 30h, 0FCh
F000:FB04 78 30 6C 6C 6C 6C db 78h, 30h, 6Ch, 6Ch, 6Ch, 6Ch
F000:FB0A 6C 00 6C 00 7F DB db 6Ch, 0, 6Ch, 0, 7Fh, 0DBh
F000:FB10 DB DB 7B 1B 1B 00 db 0DBh, 0DBh, 7Bh, 1Bh, 1Bh, 0
F000:FB16 3C 60 3C 66 66 3C db 3Ch, 60h, 3Ch, 66h, 66h, 3Ch
F000:FB1C 06 3C 00 00 00 00 db 6, 3Ch, 0, 0, 0, 0
F000:FB22 FE FE FE 00 18 3C db 0FEh, 0FEh, 0FEh, 0, 18h, 3Ch
F000:FB28 7E 18 7E 3C 18 7E db 7Eh, 18h, 7Eh, 3Ch, 18h, 7Eh
F000:FB2E 30 78 FC 30 30 30 db 30h, 78h, 0FCh, 30h, 30h, 30h
F000:FB34 30 00 30 30 30 30 db 30h, 0, 30h, 30h, 30h, 30h
F000:FB3A FC 78 30 00 00 08 db 0FCh, 78h, 30h, 0, 0, 8
F000:FB40 0C FE 0C 08 00 00 db 0Ch, 0FEh, 0Ch, 8, 0, 0
F000:FB46 00 20 60 FE 60 20 db 0, 20h, 60h, 0FEh, 60h, 20h
F000:FB4C 00 00 00 00 C0 C0 db 0, 0, 0, 0, 0C0h, 0C0h
F000:FB52 FE 00 00 00 00 24 db 0FEh, 0, 0, 0, 0, 24h
F000:FB58 42 FF 42 24 00 00 db 42h, 0FFh, 42h, 24h, 0, 0
F000:FB5E 00 10 38 7C FE FE db 0, 10h, 38h, 7Ch, 0FEh, 0FEh
F000:FB64 00 00 00 FE FE 7C db 0, 0, 0, 0FEh, 0FEh, 7Ch
F000:FB6A 38 10 00 00 00 00 db 38h, 10h, 0, 0, 0, 0
F000:FB70 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:FB76 18 18 18 18 18 00 db 18h, 18h, 18h, 18h, 18h, 0
F000:FB7C 18 00 CC CC CC 00 db 18h, 0, 0CCh, 0CCh, 0CCh, 0
F000:FB82 00 00 00 00 36 6C db 0, 0, 0, 0, 36h, 6Ch
F000:FB88 FE 6C FE 6C D8 00 db 0FEh, 6Ch, 0FEh, 6Ch, 0D8h, 0
F000:FB8E 18 7E C0 7C 06 FC db 18h, 7Eh, 0C0h, 7Ch, 6, 0FCh
F000:FB94 30 00 C2 C6 0C 18 db 30h, 0, 0C2h, 0C6h, 0Ch, 18h
F000:FB9A 30 66 C6 00 38 6C db 30h, 66h, 0C6h, 0, 38h, 6Ch
F000:FBA0 38 70 DE CC 76 00 db 38h, 70h, 0DEh, 0CCh, 76h, 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 321
F000:FBA6 30 30 60 00 00 00 db 30h, 30h, 60h, 0, 0, 0
F000:FBAC 00 00 0C 18 30 30 db 0, 0, 0Ch, 18h, 30h, 30h
F000:FBB2 30 18 0C 00 30 18 db 30h, 18h, 0Ch, 0, 30h, 18h
F000:FBB8 0C 0C 0C 18 30 00 db 0Ch, 0Ch, 0Ch, 18h, 30h, 0
F000:FBBE 00 6C 38 FE 38 6C db 0, 6Ch, 38h, 0FEh, 38h, 6Ch
F000:FBC4 00 00 00 18 18 7E db 0, 0, 0, 18h, 18h, 7Eh
F000:FBCA 18 18 00 00 00 00 db 18h, 18h, 0, 0, 0, 0
F000:FBD0 00 00 00 18 18 30 db 0, 0, 0, 18h, 18h, 30h
F000:FBD6 00 00 00 7E 00 00 db 0, 0, 0, 7Eh, 0, 0
F000:FBDC 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:FBE2 00 18 18 00 02 06 db 0, 18h, 18h, 0, 2, 6
F000:FBE8 0C 18 30 60 C0 00 db 0Ch, 18h, 30h, 60h, 0C0h, 0
F000:FBEE 7C CE DE F6 E6 C6 db 7Ch, 0CEh, 0DEh, 0F6h, 0E6h, 0C6h
F000:FBF4 7C 00 18 38 18 18 db 7Ch, 0, 18h, 38h, 18h, 18h
F000:FBFA 18 18 7E 00 7C C6 db 18h, 18h, 7Eh, 0, 7Ch, 0C6h
F000:FC00 06 1C 70 C6 FE 00 db 6, 1Ch, 70h, 0C6h, 0FEh, 0
F000:FC06 7C C6 06 1C 06 C6 db 7Ch, 0C6h, 6, 1Ch, 6, 0C6h
F000:FC0C 7C 00 1C 3C 6C CC db 7Ch, 0, 1Ch, 3Ch, 6Ch, 0CCh
F000:FC12 FE 0C 0C 00 FE C0 db 0FEh, 0Ch, 0Ch, 0, 0FEh, 0C0h
F000:FC18 FC 06 06 C6 7C 00 db 0FCh, 6, 6, 0C6h, 7Ch, 0
F000:FC1E 3C 60 C0 FC C6 C6 db 3Ch, 60h, 0C0h, 0FCh, 0C6h, 0C6h
F000:FC24 7C 00 FE C6 0C 18 db 7Ch, 0, 0FEh, 0C6h, 0Ch, 18h
F000:FC2A 30 30 30 00 7C C6 db 30h, 30h, 30h, 0, 7Ch, 0C6h
F000:FC30 C6 7C C6 C6 7C 00 db 0C6h, 7Ch, 0C6h, 0C6h, 7Ch, 0
F000:FC36 7C C6 C6 7E 06 0C db 7Ch, 0C6h, 0C6h, 7Eh, 6, 0Ch
F000:FC3C 78 00 00 18 18 00 db 78h, 0, 0, 18h, 18h, 0
F000:FC42 00 18 18 00 00 18 db 0, 18h, 18h, 0, 0, 18h
F000:FC48 18 00 00 18 18 30 db 18h, 0, 0, 18h, 18h, 30h
F000:FC4E 0C 18 30 60 30 18 db 0Ch, 18h, 30h, 60h, 30h, 18h
F000:FC54 0C 00 00 00 7E 00 db 0Ch, 0, 0, 0, 7Eh, 0
F000:FC5A 00 7E 00 00 30 18 db 0, 7Eh, 0, 0, 30h, 18h
F000:FC60 0C 06 0C 18 30 00 db 0Ch, 6, 0Ch, 18h, 30h, 0
F000:FC66 3C 66 06 0C 18 00 db 3Ch, 66h, 6, 0Ch, 18h, 0
F000:FC6C 18 00 7C C6 DE DE db 18h, 0, 7Ch, 0C6h, 0DEh, 0DEh
F000:FC72 DE C0 7C 00 38 6C db 0DEh, 0C0h, 7Ch, 0, 38h, 6Ch
F000:FC78 C6 C6 FE C6 C6 00 db 0C6h, 0C6h, 0FEh, 0C6h, 0C6h, 0
F000:FC7E FC 6E 66 7C 66 6E db 0FCh, 6Eh, 66h, 7Ch, 66h, 6Eh
F000:FC84 FC 00 3E 62 C0 C0 db 0FCh, 0, 3Eh, 62h, 0C0h, 0C0h
F000:FC8A C0 62 3E 00 F8 6E db 0C0h, 62h, 3Eh, 0, 0F8h, 6Eh
F000:FC90 66 66 66 6E F8 00 db 66h, 66h, 66h, 6Eh, 0F8h, 0
F000:FC96 FE 62 60 78 60 62 db 0FEh, 62h, 60h, 78h, 60h, 62h
F000:FC9C FE 00 FE 62 60 78 db 0FEh, 0, 0FEh, 62h, 60h, 78h
F000:FCA2 60 60 F0 00 3E 62 db 60h, 60h, 0F0h, 0, 3Eh, 62h
F000:FCA8 C0 C0 CE 66 3E 00 db 0C0h, 0C0h, 0CEh, 66h, 3Eh, 0
F000:FCAE C6 C6 C6 FE C6 C6 db 0C6h, 0C6h, 0C6h, 0FEh, 0C6h, 0C6h
F000:FCB4 C6 00 3C 18 18 18 db 0C6h, 0, 3Ch, 18h, 18h, 18h
F000:FCBA 18 18 3C 00 1E 0C db 18h, 18h, 3Ch, 0, 1Eh, 0Ch
F000:FCC0 0C 0C 0C CC 78 00 db 0Ch, 0Ch, 0Ch, 0CCh, 78h, 0
F000:FCC6 E6 66 6C 78 78 6C db 0E6h, 66h, 6Ch, 78h, 78h, 6Ch
F000:FCCC E6 00 F0 60 60 60 db 0E6h, 0, 0F0h, 60h, 60h, 60h
F000:FCD2 60 66 FE 00 C6 EE db 60h, 66h, 0FEh, 0, 0C6h, 0EEh
F000:FCD8 FE D6 C6 C6 C6 00 db 0FEh, 0D6h, 0C6h, 0C6h, 0C6h, 0
F000:FCDE C6 E6 F6 FE DE CE db 0C6h, 0E6h, 0F6h, 0FEh, 0DEh, 0CEh
F000:FCE4 C6 00 7C C6 C6 C6 db 0C6h, 0, 7Ch, 0C6h, 0C6h, 0C6h
F000:FCEA C6 C6 7C 00 FC 66 db 0C6h, 0C6h, 7Ch, 0, 0FCh, 66h
F000:FCF0 66 7C 60 60 E0 00 db 66h, 7Ch, 60h, 60h, 0E0h, 0
F000:FCF6 7C C6 C6 D6 DE 7C db 7Ch, 0C6h, 0C6h, 0D6h, 0DEh, 7Ch
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 322
F000:FCFC 06 00 FC 66 66 7C db 6, 0, 0FCh, 66h, 66h, 7Ch
F000:FD02 78 6C E6 00 7C C6 db 78h, 6Ch, 0E6h, 0, 7Ch, 0C6h
F000:FD08 E0 38 0E C6 7C 00 db 0E0h, 38h, 0Eh, 0C6h, 7Ch, 0
F000:FD0E 7E 5A 18 18 18 18 db 7Eh, 5Ah, 18h, 18h, 18h, 18h
F000:FD14 3C 00 66 66 66 66 db 3Ch, 0, 66h, 66h, 66h, 66h
F000:FD1A 66 66 3C 00 66 66 db 66h, 66h, 3Ch, 0, 66h, 66h
F000:FD20 66 66 66 3C 18 00 db 66h, 66h, 66h, 3Ch, 18h, 0
F000:FD26 C6 C6 C6 D6 FE FE db 0C6h, 0C6h, 0C6h, 0D6h, 0FEh, 0FEh
F000:FD2C C6 00 C6 6C 38 38 db 0C6h, 0, 0C6h, 6Ch, 38h, 38h
F000:FD32 6C C6 C6 00 66 66 db 6Ch, 0C6h, 0C6h, 0, 66h, 66h
F000:FD38 66 3C 18 18 3C 00 db 66h, 3Ch, 18h, 18h, 3Ch, 0
F000:FD3E FE CC 18 30 60 C6 db 0FEh, 0CCh, 18h, 30h, 60h, 0C6h
F000:FD44 FE 00 3C 30 30 30 db 0FEh, 0, 3Ch, 30h, 30h, 30h
F000:FD4A 30 30 3C 00 80 C0 db 30h, 30h, 3Ch, 0, 80h, 0C0h
F000:FD50 60 30 18 0C 06 00 db 60h, 30h, 18h, 0Ch, 6, 0
F000:FD56 3C 0C 0C 0C 0C 0C db 3Ch, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch
F000:FD5C 3C 00 18 3C 66 00 db 3Ch, 0, 18h, 3Ch, 66h, 0
F000:FD62 00 00 00 00 00 00 db 0, 0, 0, 0, 0, 0
F000:FD68 00 00 00 00 00 FF db 0, 0, 0, 0, 0, 0FFh
F000:FD6E 18 18 0C 00 00 00 db 18h, 18h, 0Ch, 0, 0, 0
F000:FD74 00 00 00 00 38 0C db 0, 0, 0, 0, 38h, 0Ch
F000:FD7A 7C CC 76 00 60 60 db 7Ch, 0CCh, 76h, 0, 60h, 60h
F000:FD80 60 7C 66 66 DC 00 db 60h, 7Ch, 66h, 66h, 0DCh, 0
F000:FD86 00 00 7C C4 C0 C4 db 0, 0, 7Ch, 0C4h, 0C0h, 0C4h
F000:FD8C 7C 00 0C 0C 0C 7C db 7Ch, 0, 0Ch, 0Ch, 0Ch, 7Ch
F000:FD92 CC CC 76 00 00 00 db 0CCh, 0CCh, 76h, 0, 0, 0
F000:FD98 78 CC FC C0 7C 00 db 78h, 0CCh, 0FCh, 0C0h, 7Ch, 0
F000:FD9E 38 6C 60 F8 60 60 db 38h, 6Ch, 60h, 0F8h, 60h, 60h
F000:FDA4 E0 00 00 00 76 CC db 0E0h, 0, 0, 0, 76h, 0CCh
F000:FDAA CC 7C 0C 7C E0 60 db 0CCh, 7Ch, 0Ch, 7Ch, 0E0h, 60h
F000:FDB0 60 7C 66 66 66 00 db 60h, 7Ch, 66h, 66h, 66h, 0
F000:FDB6 30 00 70 30 30 30 db 30h, 0, 70h, 30h, 30h, 30h
F000:FDBC 38 00 0C 00 1C 0C db 38h, 0, 0Ch, 0, 1Ch, 0Ch
F000:FDC2 0C CC CC 78 E0 60 db 0Ch, 0CCh, 0CCh, 78h, 0E0h, 60h
F000:FDC8 66 6C 78 6C 66 00 db 66h, 6Ch, 78h, 6Ch, 66h, 0
F000:FDCE 70 30 30 30 30 30 db 70h, 30h, 30h, 30h, 30h, 30h
F000:FDD4 38 00 00 00 CC FE db 38h, 0, 0, 0, 0CCh, 0FEh
F000:FDDA D6 C6 C6 00 00 00 db 0D6h, 0C6h, 0C6h, 0, 0, 0
F000:FDE0 DC 66 66 66 66 00 db 0DCh, 66h, 66h, 66h, 66h, 0
F000:FDE6 00 00 3C 66 66 66 db 0, 0, 3Ch, 66h, 66h, 66h
F000:FDEC 3C 00 00 00 DC 66 db 3Ch, 0, 0, 0, 0DCh, 66h
F000:FDF2 66 7C 60 E0 00 00 db 66h, 7Ch, 60h, 0E0h, 0, 0
F000:FDF8 76 CC CC 7C 0C 0E db 76h, 0CCh, 0CCh, 7Ch, 0Ch, 0Eh
F000:FDFE 00 00 DC 76 60 60 db 0, 0, 0DCh, 76h, 60h, 60h
F000:FE04 60 00 00 00 78 C0 db 60h, 0, 0, 0, 78h, 0C0h
F000:FE0A 78 0C 78 00 10 30 db 78h, 0Ch, 78h, 0, 10h, 30h
F000:FE10 78 30 30 34 18 00 db 78h, 30h, 30h, 34h, 18h, 0
F000:FE16 00 00 CC CC CC CC db 0, 0, 0CCh, 0CCh, 0CCh, 0CCh
F000:FE1C F6 00 00 00 66 66 db 0F6h, 0, 0, 0, 66h, 66h
F000:FE22 66 3C 18 00 00 00 db 66h, 3Ch, 18h, 0, 0, 0
F000:FE28 C6 C6 D6 FE 6C 00 db 0C6h, 0C6h, 0D6h, 0FEh, 6Ch, 0
F000:FE2E 00 00 CC 78 30 78 db 0, 0, 0CCh, 78h, 30h, 78h
F000:FE34 CC 00 00 00 CC CC db 0CCh, 0, 0, 0, 0CCh, 0CCh
F000:FE3A CC 7C 0C 7C 00 00 db 0CCh, 7Ch, 0Ch, 7Ch, 0, 0
F000:FE40 FC 18 30 60 FC 00 db 0FCh, 18h, 30h, 60h, 0FCh, 0
F000:FE46 0E 18 18 70 18 18 db 0Eh, 18h, 18h, 70h, 18h, 18h
F000:FE4C 0E 00 30 30 30 00 db 0Eh, 0, 30h, 30h, 30h, 0
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 323
F000:FE52 30 30 30 00 70 18 db 30h, 30h, 30h, 0, 70h, 18h
F000:FE58 18 0E 18 18 70 00 db 18h, 0Eh, 18h, 18h, 70h, 0
F000:FE5E 00 76 DC 00 00 00 db 0, 76h, 0DCh, 0, 0, 0
F000:FE64 00 00 10 38 6C C6 db 0, 0, 10h, 38h, 6Ch, 0C6h
F000:FE6A C6 C6 FE 00 db 0C6h, 0C6h, 0FEh, 0
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:FE6E int_1Ah_entry: ; xref F000:FF17
F000:FE6E E9 EEC0 jmp int_1Ah_RTC ; (ED31)
F000:FE71 FF FF FF FF FF 5F db 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 5Fh
F000:FE77 F2 5B 7F CA CA F2 db 0F2h, 5Bh, 7Fh, 0CAh, 0CAh, 0F2h
F000:FE7D 7F EE 5A 62 5A 2E db 7Fh, 0EEh, 5Ah, 62h, 5Ah, 2Eh
F000:FE83 7A 4E 7F B2 1A 32 db 7Ah, 4Eh, 7Fh, 0B2h, 1Ah, 32h
F000:FE89 2E 6A 4A 32 4F 7F db 2Eh, 6Ah, 4Ah, 32h, 4Fh, 7Fh
F000:FE8F DA C6 EE DA FA db 0DAh, 0C6h, 0EEh, 0DAh, 0FAh
F000:FE94 4F 7F 3B 3B 4B 3B db 'O', 7Fh, ';;K;3K'
F000:FE9A 33 4B
F000:FE9C 1F 2B 11 24 00 01 db 1Fh, 2Bh, 11h, 24h, 0, 1
F000:FEA2 06 13 90 db 6, 13h, 90h
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:FEA5 int_8_entry: ; xref F000:FEF3
F000:FEA5 E9 EE3F jmp int_8_timer ; (ECE7)
F000:FEA8 50 A0 12 00 A8 20 db 50h, 0A0h, 12h, 0, 0A8h, 20h
F000:FEAE 58 74 03 E9 9C E2 db 58h, 74h, 3, 0E9h, 9Ch, 0E2h
F000:FEB4 50 52 EB 0B 90 EC db 50h, 52h, 0EBh, 0Bh, 90h, 0ECh
F000:FEBA 34 01 24 01 EB 00 db 34h, 1, 24h, 1, 0EBh, 0
F000:FEC0 EB 00 db 0EBh, 0
F000:FEC2 loc_1505:
F000:FEC2 EE out dx,al ; port 0, DMA-1 bas&add ch 0
F000:FEC3 loc_1506:
F000:FEC3 5A pop dx
F000:FEC4 B0 20 mov al,20h ; ' '
F000:FEC6 E6 20 out 20h,al ; port 20h, 8259-1 int command
; al = 20h, end of interrupt
F000:FEC8 58 pop ax
F000:FEC9 CF iret ; Interrupt return
F000:FECA 0019[00] db 25 dup (0)
F000:FEE3 7D EA 7D EA C3 E2 db 7Dh, 0EAh, 7Dh, 0EAh, 0C3h, 0E2h
F000:FEE9 7D EA 7D EA 54 FF db 7Dh, 0EAh, 7Dh, 0EAh, 54h, 0FFh
F000:FEEF 29 EB 7D EA db 29h, 0EBh, 7Dh, 0EAh
F000:FEF3 FEA5 int_vec_table dw offset int_8_entry ; Initial interrupt vectors
F000:FEF5 E987 dw offset int_9_entry
F000:FEF7 EA7D dw offset int_unused
F000:FEF9 EA7D dw offset int_unused
F000:FEFB EA7D dw offset int_unused
F000:FEFD EA7D dw offset int_unused
F000:FEFF EF57 dw offset int_0Eh_entry
F000:FF01 FF53 dw offset int_return
F000:FF03 F065 dw offset int_10h_entry
F000:FF05 F84D dw offset int_11h_entry
F000:FF07 F841 dw offset int_12h_memsiz
F000:FF09 EC59 dw offset int_13h_entry
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 324
F000:FF0B E739 dw offset int_14h_entry
F000:FF0D F859 dw offset int_15h_entry
F000:FF0F E82E dw offset int_16h_entry
F000:FF11 EFD2 dw offset int_17h_entry
F000:FF13 E000 dw offset int_18h_entry
F000:FF15 E6F2 dw offset int_19h_entry
F000:FF17 FE6E dw offset int_1Ah_entry
F000:FF19 FF53 dw offset int_return
F000:FF1B FF53 dw offset int_return
F000:FF1D F0A4 int_data_table dw offset video_hdwr_tbl1
F000:FF1F EFC7 dw offset dsk_info_1
F000:FF21 0000 video_ptr dw 0
F000:FF23 EA28 int_vec_table_2 dw offset int_70h_clock
F000:FF25 EEC7 dw offset int_71h_LAN
F000:FF27 EA7D dw offset int_unused
F000:FF29 EA7D dw offset int_unused
F000:FF2B EA7D dw offset int_unused
F000:FF2D EED0 dw offset int_75h_80287
F000:FF2F E845 dw offset int_76h_hddone
F000:FF31 FF53 dw offset int_return
F000:FF33 001D[00] db 29 dup (0)
F000:FF50 30 10 00 db 30h, 10h, 0
;██████████████████████████████████████████████████████████████████████████
;
; External Entry Point
;
;██████████████████████████████████████████████████████████████████████████
F000:FF53 int_return proc near ; xref F000:FF01, FF19, FF1B, FF31
F000:FF53 CF iret ; Interrupt return
int_return endp
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:FF54 int_5_entry:
F000:FF54 E9 ED05 jmp int_5_prn_scrn ; (EC5C)
F000:FF57 00 00 db 0, 0
F000:FF59 28 43 29 31 39 39 db '(C)1990AMI,404-263-8181'
F000:FF5F 30 41 4D 49 2C 34
F000:FF65 30 34 2D 32 36 33
F000:FF6B 2D 38 31 38 31
F000:FF70 97 AF AF FE FE FE db 97h, 0AFh, 0AFh, 0FEh, 0FEh, 0FEh
F000:FF76 FE FE D5 4D F5 9D db 0FEh, 0FEh, 0D5h, 4Dh, 0F5h, 9Dh
F000:FF7C 55 F5 5D B5 85 8D db 55h, 0F5h, 5Dh, 0B5h, 85h, 8Dh
F000:FF82 FE E5 85 7D 35 9E db 0FEh, 0E5h, 85h, 7Dh, 35h, 9Eh
F000:FF88 FE 8D 85 5D FE CD db 0FEh, 8Dh, 85h, 5Dh, 0FEh, 0CDh
F000:FF8E 85 6D FE 65 F5 9D db 85h, 6Dh, 0FEh, 65h, 0F5h, 9Dh
F000:FF94 D5 97 AF FE FE FE db 0D5h, 97h, 0AFh, 0FEh, 0FEh, 0FEh
F000:FF9A FE FE BE E5 B6 FE db 0FEh, 0FEh, 0BEh, 0E5h, 0B6h, 0FEh
F000:FFA0 F5 94 D4 6C B4 E4 db 0F5h, 94h, 0D4h, 6Ch, 0B4h, 0E4h
F000:FFA6 F4 8C FE 95 D4 C4 db 0F4h, 8Ch, 0FEh, 95h, 0D4h, 0C4h
F000:FFAC F4 5C 6C D4 8C DC db 0F4h, 5Ch, 6Ch, 0D4h, 8Ch, 0DCh
F000:FFB2 64 FE B5 8C E4 8E db 64h, 0FEh, 0B5h, 8Ch, 0E4h, 8Eh
F000:FFB8 9E 97 AF AB db 9Eh, 97h, 0AFh, 0ABh
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 325
F000:FFBC 000C[FF] db 12 dup (0FFh)
F000:FFC8 5F F2 5B 7F CA CA db 5Fh, 0F2h, 5Bh, 7Fh, 0CAh, 0CAh
F000:FFCE F2 7F EE 5A 62 5A db 0F2h, 7Fh, 0EEh, 5Ah, 62h, 5Ah
F000:FFD4 2E 7A 4E 7F B2 1A db 2Eh, 7Ah, 4Eh, 7Fh, 0B2h, 1Ah
F000:FFDA 32 2E 6A 4A 32 4F db 32h, 2Eh, 6Ah, 4Ah, 32h, 4Fh
F000:FFE0 7F DA C6 EE DA FA db 7Fh, 0DAh, 0C6h, 0EEh, 0DAh, 0FAh
F000:FFE6 4F 7F 3B 3B 4B 3B db 'O', 7Fh, ';;K;3K'
F000:FFEC 33 4B
F000:FFEE 1F 2B db 1Fh, 2Bh
; ══════ BIOS EXTERNAL ENTRY POINT ═══════════════════════════════════════
F000:FFF0 power_on_reset: ; xref F000:C086
F000:FFF0 EA F000E05B jmp far ptr loc_1197 ; (E05B)
F000:FFF5 30 38 2F 33 30 2F rom_versn_date db '08/30/90', 0 ; BIOS version date code
F000:FFFB 39 30 00
F000:FFFE FC model_type db 0FCh ; Model FFh = PC
; FEh = 1st XT
; FBh = later XTs
; FCh = AT type (286/386)
; FAh = models 25/30
; F9h = IBM lap-tops
; F8h = models 70/80 (80386)
F000:FFFF 00 model_sub_type db 0
seg_d ends
end
bios.lst BIOS ROM Analysis Sourcer Listing v2.14 7-Apr-92 3:44 pm Page 326
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ CROSS REFERENCE - KEY ENTRY POINTS ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
seg:off type label
---- ---- ---- ---------------
F000:806C near system_reset
F000:853C near int_10h_video
F000:8FC4 near int_19h_bootup
F000:9B00 near int_9_keyboard
F000:A07C near int_16h_keybd
F000:AE26 near int_13h_floppy
F000:C964 near int_15h_servics
F000:E000 extn int_18h_entry
F000:E005 near int_18h_basic
F000:E2C3 extn int_2_entry
F000:E6F2 extn int_19h_entry
F000:E739 extn int_14h_entry
F000:E82E extn int_16h_entry
F000:E831 near int_0Eh_floppy
F000:E845 near int_76h_hddone
F000:E987 extn int_9_entry
F000:E98A near int_2_NMI
F000:EA28 near int_70h_clock
F000:EA7D near int_unused
F000:EB29 near int_6_badopcode
F000:EC59 extn int_13h_entry
F000:EC5C near int_5_prn_scrn
F000:ECE7 near int_8_timer
F000:ED31 near int_1Ah_RTC
F000:EEC7 near int_71h_LAN
F000:EED0 near int_75h_80287
F000:EF57 extn int_0Eh_entry
F000:EFD2 extn int_17h_entry
F000:F065 extn int_10h_entry
F000:F841 near int_12h_memsiz
F000:F84D extn int_11h_entry
F000:F84F near int_11h_equip
F000:F859 extn int_15h_entry
F000:F85C near int_17h_printer
F000:F8E2 near int_14h_RS232
F000:FE6E extn int_1Ah_entry
F000:FEA5 extn int_8_entry
F000:FF53 near int_return
F000:FF54 extn int_5_entry
F000:FFF0 extn power_on_reset